woocommerce_email_attachments hook with empty $order argument in Woocommerce

Multi tool use
up vote
1
down vote
favorite
The person building a WP site for me is stuck for some time now with this problem. He needs to attach some custom PDF files into the order confirmation mail. He uses woocommerce_emails_attach_downloadables
function to do that. For some reason that function is getting called with the $order
parameter being empty.
Here is the code he uses :
add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );
function attach_order_notice ( $attachments, $email_id, $order )
//
// Only for "New Order" email notification (for admin)
if( $email_id == 'customer_on_hold_order' )
$pdf_options = array(
// "source_type" => 'html',
// "source" => '<html>hello</html>',
"source_type" => 'url',
"source" => 'http://tag4u.devurl.co.il/checkout/order-received/757/?key=wc_order_5bce0e5ba39b8',
"action" => 'save',
"save_directory" => get_template_directory() .'/pdfs',
"file_name" => 'print-pdf'. json_encode($order) .'.pdf');
// phptopdf($pdf_options);
$attachments = get_template_directory() . '/pdfs/print-pdf.pdf';
return $attachments;
So my questions are:
What are those cases ?
What can cause $order
to be passed as empty ?
php wordpress object woocommerce hook-woocommerce
add a comment |
up vote
1
down vote
favorite
The person building a WP site for me is stuck for some time now with this problem. He needs to attach some custom PDF files into the order confirmation mail. He uses woocommerce_emails_attach_downloadables
function to do that. For some reason that function is getting called with the $order
parameter being empty.
Here is the code he uses :
add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );
function attach_order_notice ( $attachments, $email_id, $order )
//
// Only for "New Order" email notification (for admin)
if( $email_id == 'customer_on_hold_order' )
$pdf_options = array(
// "source_type" => 'html',
// "source" => '<html>hello</html>',
"source_type" => 'url',
"source" => 'http://tag4u.devurl.co.il/checkout/order-received/757/?key=wc_order_5bce0e5ba39b8',
"action" => 'save',
"save_directory" => get_template_directory() .'/pdfs',
"file_name" => 'print-pdf'. json_encode($order) .'.pdf');
// phptopdf($pdf_options);
$attachments = get_template_directory() . '/pdfs/print-pdf.pdf';
return $attachments;
So my questions are:
What are those cases ?
What can cause $order
to be passed as empty ?
php wordpress object woocommerce hook-woocommerce
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
The person building a WP site for me is stuck for some time now with this problem. He needs to attach some custom PDF files into the order confirmation mail. He uses woocommerce_emails_attach_downloadables
function to do that. For some reason that function is getting called with the $order
parameter being empty.
Here is the code he uses :
add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );
function attach_order_notice ( $attachments, $email_id, $order )
//
// Only for "New Order" email notification (for admin)
if( $email_id == 'customer_on_hold_order' )
$pdf_options = array(
// "source_type" => 'html',
// "source" => '<html>hello</html>',
"source_type" => 'url',
"source" => 'http://tag4u.devurl.co.il/checkout/order-received/757/?key=wc_order_5bce0e5ba39b8',
"action" => 'save',
"save_directory" => get_template_directory() .'/pdfs',
"file_name" => 'print-pdf'. json_encode($order) .'.pdf');
// phptopdf($pdf_options);
$attachments = get_template_directory() . '/pdfs/print-pdf.pdf';
return $attachments;
So my questions are:
What are those cases ?
What can cause $order
to be passed as empty ?
php wordpress object woocommerce hook-woocommerce
The person building a WP site for me is stuck for some time now with this problem. He needs to attach some custom PDF files into the order confirmation mail. He uses woocommerce_emails_attach_downloadables
function to do that. For some reason that function is getting called with the $order
parameter being empty.
Here is the code he uses :
add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );
function attach_order_notice ( $attachments, $email_id, $order )
//
// Only for "New Order" email notification (for admin)
if( $email_id == 'customer_on_hold_order' )
$pdf_options = array(
// "source_type" => 'html',
// "source" => '<html>hello</html>',
"source_type" => 'url',
"source" => 'http://tag4u.devurl.co.il/checkout/order-received/757/?key=wc_order_5bce0e5ba39b8',
"action" => 'save',
"save_directory" => get_template_directory() .'/pdfs',
"file_name" => 'print-pdf'. json_encode($order) .'.pdf');
// phptopdf($pdf_options);
$attachments = get_template_directory() . '/pdfs/print-pdf.pdf';
return $attachments;
So my questions are:
What are those cases ?
What can cause $order
to be passed as empty ?
php wordpress object woocommerce hook-woocommerce
php wordpress object woocommerce hook-woocommerce
edited Nov 12 at 22:34


LoicTheAztec
82.8k125993
82.8k125993
asked Nov 11 at 20:34
Louis Shraga
1891215
1891215
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Your developer has been using maybe this woocommerce official snippet (That is outdated as it is 3 years old) and it uses woocommerce_email_attachments
filter hook.
This filter hook is defined:
- one time (1) in
WC_Email
class (with the$order
argument) - three times (3) in
WC_emails
Class (without the$order
argument)
So the
WC_Order
Object$order
is only defined inWC_Email
class as third argument.
That means that this outdated official code need to be tweaked as follow:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) ! isset( $email_id ) )
return $attachments;
// ===> Your custom code goes Here <===
return $attachments;
This should work avoiding problems.
So as you are asking, this hook is also used on the following specific product notifications with really different hook arguments:
- On "Low stock" notification (with
'low_stock'
and$product
as 2nd & 3rd arguments)
- On "No stock" notification (with
'no_stock'
and$product
as 2nd & 3rd arguments)
- On "Backorder" notification (with
'backorder'
and$args
as 2nd & 3rd arguments)
So here the 2nd argument is the stock status
$stock_status
and the 3rd argument is theWC_Product
object$product
(or an array$args
).
Then In those 3 notifications, the $order
object doesn't exist as it can be a WC_Product
Object, an array, an empty array, or null.
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific$email_id
. In your code it's restricted to$email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.
– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252974%2fwoocommerce-email-attachments-hook-with-empty-order-argument-in-woocommerce%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Your developer has been using maybe this woocommerce official snippet (That is outdated as it is 3 years old) and it uses woocommerce_email_attachments
filter hook.
This filter hook is defined:
- one time (1) in
WC_Email
class (with the$order
argument) - three times (3) in
WC_emails
Class (without the$order
argument)
So the
WC_Order
Object$order
is only defined inWC_Email
class as third argument.
That means that this outdated official code need to be tweaked as follow:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) ! isset( $email_id ) )
return $attachments;
// ===> Your custom code goes Here <===
return $attachments;
This should work avoiding problems.
So as you are asking, this hook is also used on the following specific product notifications with really different hook arguments:
- On "Low stock" notification (with
'low_stock'
and$product
as 2nd & 3rd arguments)
- On "No stock" notification (with
'no_stock'
and$product
as 2nd & 3rd arguments)
- On "Backorder" notification (with
'backorder'
and$args
as 2nd & 3rd arguments)
So here the 2nd argument is the stock status
$stock_status
and the 3rd argument is theWC_Product
object$product
(or an array$args
).
Then In those 3 notifications, the $order
object doesn't exist as it can be a WC_Product
Object, an array, an empty array, or null.
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific$email_id
. In your code it's restricted to$email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.
– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
add a comment |
up vote
1
down vote
accepted
Your developer has been using maybe this woocommerce official snippet (That is outdated as it is 3 years old) and it uses woocommerce_email_attachments
filter hook.
This filter hook is defined:
- one time (1) in
WC_Email
class (with the$order
argument) - three times (3) in
WC_emails
Class (without the$order
argument)
So the
WC_Order
Object$order
is only defined inWC_Email
class as third argument.
That means that this outdated official code need to be tweaked as follow:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) ! isset( $email_id ) )
return $attachments;
// ===> Your custom code goes Here <===
return $attachments;
This should work avoiding problems.
So as you are asking, this hook is also used on the following specific product notifications with really different hook arguments:
- On "Low stock" notification (with
'low_stock'
and$product
as 2nd & 3rd arguments)
- On "No stock" notification (with
'no_stock'
and$product
as 2nd & 3rd arguments)
- On "Backorder" notification (with
'backorder'
and$args
as 2nd & 3rd arguments)
So here the 2nd argument is the stock status
$stock_status
and the 3rd argument is theWC_Product
object$product
(or an array$args
).
Then In those 3 notifications, the $order
object doesn't exist as it can be a WC_Product
Object, an array, an empty array, or null.
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific$email_id
. In your code it's restricted to$email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.
– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Your developer has been using maybe this woocommerce official snippet (That is outdated as it is 3 years old) and it uses woocommerce_email_attachments
filter hook.
This filter hook is defined:
- one time (1) in
WC_Email
class (with the$order
argument) - three times (3) in
WC_emails
Class (without the$order
argument)
So the
WC_Order
Object$order
is only defined inWC_Email
class as third argument.
That means that this outdated official code need to be tweaked as follow:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) ! isset( $email_id ) )
return $attachments;
// ===> Your custom code goes Here <===
return $attachments;
This should work avoiding problems.
So as you are asking, this hook is also used on the following specific product notifications with really different hook arguments:
- On "Low stock" notification (with
'low_stock'
and$product
as 2nd & 3rd arguments)
- On "No stock" notification (with
'no_stock'
and$product
as 2nd & 3rd arguments)
- On "Backorder" notification (with
'backorder'
and$args
as 2nd & 3rd arguments)
So here the 2nd argument is the stock status
$stock_status
and the 3rd argument is theWC_Product
object$product
(or an array$args
).
Then In those 3 notifications, the $order
object doesn't exist as it can be a WC_Product
Object, an array, an empty array, or null.
Your developer has been using maybe this woocommerce official snippet (That is outdated as it is 3 years old) and it uses woocommerce_email_attachments
filter hook.
This filter hook is defined:
- one time (1) in
WC_Email
class (with the$order
argument) - three times (3) in
WC_emails
Class (without the$order
argument)
So the
WC_Order
Object$order
is only defined inWC_Email
class as third argument.
That means that this outdated official code need to be tweaked as follow:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) ! isset( $email_id ) )
return $attachments;
// ===> Your custom code goes Here <===
return $attachments;
This should work avoiding problems.
So as you are asking, this hook is also used on the following specific product notifications with really different hook arguments:
- On "Low stock" notification (with
'low_stock'
and$product
as 2nd & 3rd arguments)
- On "No stock" notification (with
'no_stock'
and$product
as 2nd & 3rd arguments)
- On "Backorder" notification (with
'backorder'
and$args
as 2nd & 3rd arguments)
So here the 2nd argument is the stock status
$stock_status
and the 3rd argument is theWC_Product
object$product
(or an array$args
).
Then In those 3 notifications, the $order
object doesn't exist as it can be a WC_Product
Object, an array, an empty array, or null.
edited Nov 11 at 22:41
answered Nov 11 at 22:26


LoicTheAztec
82.8k125993
82.8k125993
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific$email_id
. In your code it's restricted to$email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.
– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
add a comment |
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific$email_id
. In your code it's restricted to$email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.
– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
thanks ! I think the answer is very close to what you said. I updated the original question with the real code. Could you see what is wrong there ? I see that he uses a different filter than the one mentioned
– Louis Shraga
Nov 12 at 13:16
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
Just to better understand the answer : the same hook is called a number of times for the same order ? Some of the times with a set A of params and the other times with a somewhat different set of params ? And in the hook the code needs to "understand" which type of a call this one is ? Right ?
– Louis Shraga
Nov 12 at 22:25
1
1
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific
$email_id
. In your code it's restricted to $email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.– LoicTheAztec
Nov 12 at 22:31
@LouisShraga The hook is called on other notifications as product Low stock, No stock, Backorder… And it's called on all Order notifications, if you don't restrict it to a specific
$email_id
. In your code it's restricted to $email_id = 'customer_on_hold_order'
so it's used on Customer on Hold Order email notification… If you like/want you could please also upvote this answer. Thank you anyway.– LoicTheAztec
Nov 12 at 22:31
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
Thanks, do you know and/or can point me please to the documentation (i just cant find it) where it says if $order is set for a call in case of customer_on_hold emailId
– Louis Shraga
Nov 13 at 6:51
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
@LouisShraga There is no a specific documentation… When an order is set ta a specific order status, it will trigger the related email notification, if it's set and defined… You can explore the source code of each woocommerce classes starting with WC_Email For each class you have the order status transitions that is triggering an email.
– LoicTheAztec
Nov 13 at 14:07
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252974%2fwoocommerce-email-attachments-hook-with-empty-order-argument-in-woocommerce%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
ikNmFVTb9loSr NVxaxHf,FBpN17P4,tR9dUUMUnxGRhDCUDHszcM9 akWIO