如何基于订单产品分类条件自定义WooCommerce邮件通知的页脚内容?
代码存在的问题
in_array()语法错误:PHP 原生in_array()仅接受三个参数(待匹配值、目标数组、是否严格匹配),你将多个待匹配分类名作为独立参数传入,不符合函数调用规则。- 数组未初始化:
$term_names没有提前声明为空数组,若订单无商品、或商品未分配分类,后续调用该数组会抛出PHP未定义变量警告。 - 多分类匹配逻辑错误:要判断订单包含的分类是否命中指定列表,需先将目标分类整理为独立数组,再通过数组交集判断重合性。
修正后的完整代码
function farm_shop_woocommerce_email_footer( $order, $sent_to_admin, $plain_text, $email ) { // 初始化分类名存储数组 $term_names = []; // 定义需要匹配的目标分类列表 $target_categories = [ 'Farm Shop', 'Cowdray Kitchen', 'Cowdray Living', 'The Meditator', 'Cowdray Hampers', 'Cowdray Supper Kits', 'Grocery', 'Butchery', 'Deli', 'Pantry', 'Houseplants and Flowers', 'Picnic Hampers', 'Afternoon Tea', 'Drinks', 'Wreaths' ]; $items = $order->get_items(); foreach ( $items as $item ) { $terms = wp_get_post_terms( $item['product_id'], 'product_cat' ); foreach($terms as $term){ $term_names[] = $term->name; } } // 先对分类名去重提升判断效率,再判断是否和目标分类有交集 $unique_term_names = array_unique($term_names); if ( !empty($unique_term_names) && !empty(array_intersect($unique_term_names, $target_categories)) ) { echo 'Cowdray Farm Shop Ltd<br>VAT Number: 970407718'; } } add_action( 'woocommerce_email_footer', 'farm_shop_woocommerce_email_footer', 10, 4 );
内容的提问来源于stack exchange,提问作者alexstanhope
相关产品推荐
相关产品推荐

