Woocommerce的自定义管理员电子邮件主题

时间:2019-11-15 19:04:19

标签: php wordpress woocommerce child-theming

我希望管理员电子邮件的“电子邮件主题”行根据产品类别进行更改。 我看过所有类似的堆栈溢出问题,但它们都不适合WooCommerece 3.8.0 (请参见thisthis)。

我有这个

function custom_admin_email_subject( $subject, $order ) {
    global $woocommerce;
    foreach($order->get_items() as $item_id => $item ){
        if ( has_term( 'Category 1 Name', 'product_cat' , $item->get_product_id() ) ) { 
            break;
            $subject = sprintf( 'Category 1 Email Subject Line' );
        }
    } 
    return $subject;
}
add_filter('woocommerce_email_subject_new_order', 'custom_admin_email_subject', 1, 2);

我的代码仅返回新订单的默认电子邮件主题行(在woocommerce / settings / email中设置)。 我不知道为什么我的函数无法识别类别名称。

谁能告诉我我的代码出了什么问题?

我将此代码放置在child-theme / functions.php文件中 我正在运行WooCommerce 3.8.0和WordPress 5.3

1 个答案:

答案 0 :(得分:0)

问题出在您的if condition中。仅当在foreach变量中设置了值之后,才应在乘积有条件时中断$subject循环的执行。如下重写您的if condition。已经测试过并工作了:)

if( has_term( 'Category 1 Name', 'product_cat' , $item->get_product_id() ) ){ 
    $subject = sprintf( 'Hoodies Email Subject Line' );
    break;
}