您将获得一个空白数组,因为您正在存储WP_Term
product标记数组中的对象,然后在WP\\u Term对象的多维数组上使用inpolde(),这会在sprintf()函数上产生第一个错误,最后是第二个错误。
更好地使用wp_get_post_terms()
允许获取术语名称,而不是WP_Term
对象。
您还需要删除重复的产品名称或/和产品标签术语名称。
请尝试以下操作:
add_filter(\'woocommerce_email_subject_new_order\', \'change_admin_email_subject\', 10, 2);
function change_admin_email_subject( $subject, $order ) {
$products_names = $products_tags = [];
foreach ( $order->get_items() as $item ) {
// Get the product tags term names in an array
$term_names = wp_get_post_terms($item->get_product_id(), \'product_tag\', [\'fields\' => \'names\']);
$products_tags = array_merge($products_tags, $term_names);
$products_names[] = $item->get_name();
}
return sprintf( \'[%s] New Order (#%s): Season: %s, Item: %s from %s %s\',
wp_specialchars_decode(get_option(\'blogname\'), ENT_QUOTES),
$order->get_order_number(),
implode(\', \', array_unique($products_tags)),
implode(\', \', array_unique($products_names)),
$order->get_billing_first_name(),
$order->get_billing_last_name()
);
}
代码进入功能。活动子主题(或活动主题)的php文件。已测试并正常工作。