我在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
。
发布于 2018-11-25 09:15:43
经过许多小时和一个好朋友的帮助,我们发现了这个问题。要点是,当您想从非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 );
https://stackoverflow.com/questions/53467521
复制相似问题