我希望管理员电子邮件的“电子邮件主题”行根据产品类别进行更改。 我看过所有类似的堆栈溢出问题,但它们都不适合WooCommerece 3.8.0 (请参见this和this)。
我有这个
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
答案 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;
}