繁体   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