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

如何在WooCommerce订单面板创建并管理产品分类列

WooCommerce订单面板添加产品分类列的实现方案

我来帮你搞定这个需求!其实你之前已经掌握了全局面板加列的思路,只是需要针对WooCommerce订单的特定钩子来调整。下面是完整的实现步骤和代码:

一、添加产品分类列到订单面板

首先我们要给订单列表新增一个列,这里需要用到WooCommerce订单对应的钩子manage_shop_order_posts_columns(订单的post_type是shop_order,和你之前用的pagamento不同):

// 添加产品分类列到WooCommerce订单列表
add_filter( 'manage_shop_order_posts_columns', 'add_product_category_order_column' );
function add_product_category_order_column( $columns ) {
    // 自定义列的位置,这里选择在"订单日期"列后插入,你可以根据需求调整
    $new_columns = array();
    foreach ( $columns as $key => $value ) {
        $new_columns[ $key ] = $value;
        if ( 'order_date' === $key ) {
            $new_columns['product_category'] = __( '产品分类', 'your-text-domain' );
        }
    }
    return $new_columns;
}

二、填充产品分类列的内容

接下来要给这个新列填充实际的产品分类数据,我们用manage_shop_order_posts_custom_column钩子来实现,核心是获取订单里的所有产品,再提取它们的分类:

// 填充产品分类列的内容
add_action( 'manage_shop_order_posts_custom_column', 'populate_product_category_order_column', 10, 2 );
function populate_product_category_order_column( $column, $post_id ) {
    if ( 'product_category' === $column ) {
        // 获取订单对象
        $order = wc_get_order( $post_id );
        $category_names = array();
        
        // 遍历订单中的每一件商品
        foreach ( $order->get_items() as $item ) {
            $product = $item->get_product();
            if ( $product ) {
                // 获取该商品的所有分类名称
                $product_categories = wp_get_post_terms( 
                    $product->get_id(), 
                    'product_cat', 
                    array( 'fields' => 'names' ) 
                );
                // 合并到分类数组中
                $category_names = array_merge( $category_names, $product_categories );
            }
        }
        
        // 去重后显示分类,避免同分类商品重复展示
        if ( ! empty( $category_names ) ) {
            $unique_categories = array_unique( $category_names );
            echo implode( ', ', $unique_categories );
        } else {
            // 如果没有分类,显示占位符
            echo '-';
        }
    }
}

关键说明

  • 钩子适配:WooCommerce订单的post_type是shop_order,所以对应的列管理钩子是manage_shop_order_posts_columns,这和你之前处理自定义post类型pagamento的逻辑一致,只是钩子名要对应上。
  • 数据处理:订单可能包含多个产品,所以我们遍历所有商品提取分类,再用array_unique去重,避免重复显示相同分类。
  • 文本域:代码里的your-text-domain记得替换成你主题或插件的文本域,方便多语言适配。

把这两段代码添加到你的主题functions.php文件或者自定义插件中,就能在WooCommerce订单面板看到新增的产品分类列啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:36:08