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

如何在WooCommerce订单详情、WordPress后台及邮件通知中显示产品分类名称

嘿,我来帮你搞定在WooCommerce里显示产品分类的需求!下面分三个场景给你具体的实现代码,直接加到主题的functions.php文件,或者用代码片段插件添加就行,这样不会影响主题更新~

1. 在WordPress后台订单详情页显示产品分类

这段代码会在后台订单的每个订单项下方,追加显示对应的产品分类名称,多个分类会用逗号分隔:

add_action( 'woocommerce_admin_order_item_values', 'display_product_category_in_admin_order_items', 10, 3 );
function display_product_category_in_admin_order_items( $product, $item, $item_id ) {
    // 获取当前商品的分类信息
    $categories = get_the_terms( $product->get_id(), 'product_cat' );
    
    if ( $categories && ! is_wp_error( $categories ) ) {
        $category_names = array();
        foreach ( $categories as $category ) {
            $category_names[] = $category->name;
        }
        // 在订单项详情区域输出分类
        echo '<br><strong>产品分类:</strong> ' . implode( ', ', $category_names );
    }
}
2. 在前台用户订单详情页显示产品分类

当用户在前台查看自己的订单时,每个商品下方也会显示分类,同时适配了纯文本视图的场景:

add_action( 'woocommerce_order_item_meta_end', 'display_product_category_in_frontend_order_items', 10, 4 );
function display_product_category_in_frontend_order_items( $item_id, $item, $order, $plain_text ) {
    $product = $item->get_product();
    if ( ! $product ) return;
    
    // 获取商品分类
    $categories = get_the_terms( $product->get_id(), 'product_cat' );
    
    if ( $categories && ! is_wp_error( $categories ) ) {
        $category_names = array();
        foreach ( $categories as $category ) {
            $category_names[] = $category->name;
        }
        // 根据视图类型调整显示格式
        if ( $plain_text ) {
            echo ' | 产品分类: ' . implode( ', ', $category_names );
        } else {
            echo '<br><span class="product-category"><strong>产品分类:</strong> ' . implode( ', ', $category_names ) . '</span>';
        }
    }
}

你还可以通过.product-category这个CSS类,自定义前台分类文字的样式,比如调整颜色或字号。

3. 在WooCommerce邮件通知中显示产品分类

不管是新订单通知、客户订单确认邮件,所有邮件里的订单项都会加上分类信息,同时兼容纯文本和HTML格式的邮件:

add_action( 'woocommerce_email_order_item_meta', 'display_product_category_in_email_notifications', 10, 4 );
function display_product_category_in_email_notifications( $item_id, $item, $order, $plain_text ) {
    $product = $item->get_product();
    if ( ! $product ) return;
    
    $categories = get_the_terms( $product->get_id(), 'product_cat' );
    
    if ( $categories && ! is_wp_error( $categories ) ) {
        $category_names = array();
        foreach ( $categories as $category ) {
            $category_names[] = $category->name;
        }
        // 适配邮件的不同格式
        if ( $plain_text ) {
            echo PHP_EOL . '产品分类: ' . implode( ', ', $category_names );
        } else {
            echo '<br><strong>产品分类:</strong> ' . implode( ', ', $category_names );
        }
    }
}

如果你的站点用了自定义主题或第三方订单插件,可能需要调整代码里的优先级数值(比如把10改成20),确保代码能正常生效~

内容的提问来源于stack exchange,提问作者g3ar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:07