[英]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.