You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于订单产品分类条件自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:36:09