wordpress 如何替换OOTB woo客户完成订单的电子邮件?

kcwpcxri  于 2023-01-16  发布在  WordPress
关注(0)|答案(1)|浏览(144)

在我正在开发的一个插件中,我尝试用插件中的一个模板替换OOTB客户完成订单的电子邮件
施工单位:

define( 'BKF_WC_EMAIL_PATH', plugin_dir_path( __FILE__ ) );
add_filter('wc_get_template', array($this, 'bkf_customer_completed_order_template'), PHP_INT_MAX, 5);

功能:

function bkf_customer_completed_order_template($template, $template_name, $args, $template_path, $default_path) {
        if( $template_name == 'emails/customer-completed-order.php' ) {
            $template = trailingslashit(BKF_WC_EMAIL_PATH) . 'templates/' . $template_name;
            return $template;
        }
    }

note the template is still pulling the default woo one
欢迎任何想法/意见!

rsaldnfx

rsaldnfx1#

搞定了!
与我最初的问题中使用的方法不同,下面是对我有效的方法:
我创建了一个新类(类似于woocommerce/includes/emails/class-wc-email-customer-completed-order.php)--出于演示的目的,我们将其命名为My_Custom_Class
然后,我在我正在处理的父类的构造函数中这样调用:

add_action('woocommerce_email_classes', array( $this, 'bk_register_email' ), PHP_INT_MAX, 1 );

并添加了此函数:

public function bk_register_email( $emails ) {
        require_once 'emails/my-custom-class.php';

        $emails['WC_Email_Customer_Completed_Order'] = new My_Custom_Class();

        return $emails;
    }

相关问题