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

WooCommerce客户订单页面自定义列添加产品详情值的问题

解决WooCommerce账户订单页自定义列填充产品详情的问题

嘿,你已经成功搞定了自定义列的表头添加!不过要让这个Details列显示产品名称、描述这些内容,还得补上列内容渲染的核心逻辑。WooCommerce专门提供了对应的钩子来处理每个自定义列的内容输出,咱们来把代码补全:

完整可运行代码

// 第一步:调整订单列表的列结构(你的原有代码)
add_filter( 'woocommerce_account_orders_columns', 'new_orders_columns' );
function new_orders_columns( $columns = array() ) {
    // 隐藏不需要的列
    if( isset($columns['order-total']) ) {
        unset( $columns['order-status'] );
        unset( $columns['order-total'] );
        unset( $columns['order-actions'] );
    }
    // 插入自定义列并重新排列原有列
    $columns['order-detail'] = __( 'Details', 'woocommerce' );
    $columns['order-status'] = __( 'Status', 'woocommerce' );
    $columns['order-total'] = __( 'Total', 'woocommerce' );
    $columns['order-actions'] = __( ' ');
    
    return $columns;
}

// 第二步:渲染自定义列的产品详情内容(新增核心代码)
add_action( 'woocommerce_my_account_my_orders_column_order-detail', 'render_order_detail_column_content' );
function render_order_detail_column_content( $order ) {
    // 遍历订单中的所有商品条目
    foreach ( $order->get_items() as $item_id => $item ) {
        // 获取对应的产品对象(避免产品不存在时报错)
        $product = $item->get_product();
        if ( !$product ) continue;
        
        // 输出产品名称
        echo '<strong>' . esc_html( $product->get_name() ) . '</strong><br>';
        
        // 输出产品短描述(需要完整描述就用get_description())
        if ( $short_desc = trim( $product->get_short_description() ) ) {
            echo esc_html( $short_desc ) . '<br>';
        }
        
        // 可选:如果是可变产品,显示变体属性
        if ( $product->is_type('variable') ) {
            echo '<small>变体:' . wc_get_formatted_variation( $item, true ) . '</small><br>';
        }
        
        // 可选:显示购买数量
        echo '<small>购买数量:' . esc_html( $item->get_quantity() ) . '</small><br><hr>';
    }
}

关键逻辑说明

  1. 专属钩子匹配:WooCommerce要求每个自定义列对应一个woocommerce_my_account_my_orders_column_{$column_id}钩子,这里你的列ID是order-detail,所以钩子就是woocommerce_my_account_my_orders_column_order-detail,用来绑定内容渲染函数。
  2. 安全获取产品信息:通过$item->get_product()拿到产品对象后,用esc_html()处理输出内容,避免XSS安全风险。
  3. 灵活扩展:代码里加了变体信息、购买数量的显示,你可以根据需求删掉这些模块,或者添加价格、SKU等其他产品字段。

把这段代码添加到你的主题functions.php文件,或者自定义插件里,刷新账户订单页面就能看到Details列里填充好的产品详情啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:54:04