[英]WooCommerce email not sending via custom WordPress page template outside of WooCommerce
我已经在WordPress中创建了一个新页面,并设置了一个自定义模板作为新页面的模板。
在我的模板中,我正在做一些事情,例如显示HTML内容。 一切正常之后,我决定在自定义模板中添加一个do_action
以通过WooCommerce电子邮件客户端/类发送电子邮件。
因此,我建立了一个新的电子邮件类,并在该类中构建了一个自定义触发器,该触发器触发了电子邮件的发送:
// Triggers for this email.
add_action( 'trigger_rated_email', array( $this, 'trigger' ), 10, 10 );
/**
* Trigger the sending of this email.
*
* @param int $order_id The order ID.
* @param WC_Order|false $order Order object.
*/
public function trigger( $order_id, $order = false ) {
$this->setup_locale();
if ( $order_id && ! is_a( $order, 'WC_Order' ) ) {
$order = wc_get_order( $order_id );
}
if ( is_a( $order, 'WC_Order' ) ) {
$developer_id = get_post_meta( $order_id, 'developer_id', true );
$developer = get_userdata( $developer_id );
$this->object = $order;
$this->recipient = $developer->user_email;
$this->placeholders['{order_date}'] = wc_format_datetime( $this->object->get_date_created() );
$this->placeholders['{order_number}'] = $this->object->get_order_number();
}
if ( $this->is_enabled() && $this->get_recipient() ) {
$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
}
$this->restore_locale();
}
此add_action
触发发送电子邮件的电子邮件类中的trigger()
方法。 为了触发发送,我已经在我的自定义模板PHP文件中完成了此操作:
do_action( 'trigger_rated_email', $order_id );
保存后,我将其上传到服务器并调用了该页面,但是没有电子邮件发送到我的电子邮件帐户。
因此,我做了很多检查来弄清楚我的电子邮件班级是否存在问题:
那是什么问题呢? 我认为自定义模板中肯定存在问题,因此我的第一想到是do_action
没有正确调用,因为它不知道类中的add_action
。
经过许多小时的努力和一个好朋友的帮助,我们发现了问题所在。 关键是,当您要从非WooCommerce页面发送电子邮件时,需要首先初始化WooCommerce邮件程序。
因此,对于所有想要从非WooCommerce页面发送电子邮件的人,请在此处执行以下操作:
WC()->mailer();
do_action( 'trigger_your_custom_email', $order_id );
在您的自定义WooCommerce电子邮件类中,请在此处执行以下操作:
add_action( 'trigger_your_custom_email', array( $this, 'trigger' ), 10, 10 );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.