2

我希望管理员电子邮件的电子邮件主题行根据产品类别进行更改。我查看了所有类似的堆栈溢出问题,但没有一个适用于 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

4

1 回答 1

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;
}
于 2019-11-20T06:35:57.277 回答