簡體   English   中英

WooCommerce電子郵件未通過WooCommerce外部的自定義WordPress頁面模板發送

[英]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 );

保存后,我將其上傳到服務器並調用了該頁面,但是沒有電子郵件發送到我的電子郵件帳戶。

因此,我做了很多檢查來弄清楚我的電子郵件班級是否存在問題:

  1. 從其他頁面觸發電子郵件(不是自定義模板)->發送電子郵件
  2. 檢查我的debug.log中是否有錯誤->沒有錯誤

那是什么問題呢? 我認為自定義模板中肯定存在問題,因此我的第一想到是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM