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

如何在WooCommerce「我的账户」订单表新增列展示关联商品分类

实现方案

你已经完成了自定义列的注册,只需要追加列内容渲染的钩子函数即可,完整实现代码如下:

1. 修正列注册代码(可选优化列ID语义)

原来的列ID用了order-ship-to和实际用途不符,建议调整为语义化的ID:

/**
 * 为账户订单列表新增商品分类列
 *
 * @param string[] $columns 原有订单表列数组
 * @return string[] 调整后的列数组
 */
function sv_wc_add_my_account_orders_column( $columns ) {
    $new_columns = array();
    foreach ( $columns as $key => $name ) {
        $new_columns[ $key ] = $name;
        // 在订单号列之后插入分类列
        if ( 'order-number' === $key ) {
            $new_columns['order-product-category'] = __( '商品分类', 'textdomain' );
        }
    }
    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );

2. 新增列内容渲染代码

用WooCommerce提供的列渲染钩子输出分类内容,自动支持多商品、多分类的场景,自动去重重复分类:

/**
 * 渲染商品分类列的内容
 *
 * @param \WC_Order $order 当前订单对象
 */
function sv_wc_render_order_category_column( $order ) {
    $category_list = array();
    // 遍历订单内所有商品
    foreach ( $order->get_items() as $item ) {
        $product_id = $item->get_product_id();
        // 获取商品关联的产品分类,默认分类法为product_cat,自定义分类修改此处参数即可
        $categories = get_the_terms( $product_id, 'product_cat' );
        if ( ! is_wp_error( $categories ) && ! empty( $categories ) ) {
            foreach ( $categories as $cat ) {
                // 避免多个商品属于同一个分类时重复输出
                if ( ! isset( $category_list[ $cat->term_id ] ) ) {
                    $category_list[ $cat->term_id ] = esc_html( $cat->name );
                }
            }
        }
    }
    // 输出分类,多个分类用顿号分隔
    echo empty( $category_list ) ? '-' : implode( '、', $category_list );
}
// 钩子名后缀对应你注册的列ID,如果你没修改第一步的列ID,此处后缀要改成order-ship-to
add_action( 'woocommerce_my_account_my_orders_column_order-product-category', 'sv_wc_render_order_category_column' );

注意事项

  • 如果需要展示自定义分类,只需把get_the_terms的第二个参数product_cat替换为对应的自定义分类法别名即可
  • 如果需要给分类加上跳转链接,可以把$cat->name部分替换为<a href="'.get_term_link($cat).'">'.esc_html($cat->name).'</a>,并把implode的包裹标签改为允许HTML输出即可
  • 代码可直接放到主题的functions.php文件或者自定义功能插件中生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:15:02