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

如何修复WooCommerce编辑订单页属性列不支持可变产品的问题

问题原因

原有代码仅适配简单产品的核心问题是:直接读取$_product->post->ID时,可变产品的变体对应的ID是变体独立ID,而pa_marchio属性通常配置在父级可变产品上,无法通过变体ID取不到对应属性值;同时没有做非空判断,异常场景下会抛出PHP错误。

修复后代码

add_action( 'woocommerce_admin_order_item_headers', 'custom_admin_order_items_headers', 20, 1 );
function custom_admin_order_items_headers( $order ){
    echo '<th>' . __('Marchio', 'woocommerce') . '</th>';
}

add_action('woocommerce_admin_order_item_values', 'my_woocommerce_admin_order_item_values', 10, 3);
function my_woocommerce_admin_order_item_values($_product, $item, $item_id = null) {
    // 过滤运费、手续费等非商品行
    if( !is_a($_product, 'WC_Product') ){
        echo '<td></td>';
        return;
    }
    // 通用属性读取方法原生兼容简单/可变产品
    $marchio = $_product->get_attribute('pa_marchio');
    echo '<td>' . esc_html($marchio) . '</td>';
}

适配说明

  • 调用WC_Product原生的get_attribute方法会自动处理产品类型:
    • 简单产品直接读取自身配置的pa_marchio属性
    • 可变产品优先读取变体自定义属性,没有配置的话自动读取父级可变产品的对应属性
  • 新增类型判断过滤非商品行,避免报错
  • 新增输出转义符合WordPress编码安全规范

实现效果如下:
效果示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:15:05