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

WooCommerce佣金表格:如何在wc_get_order中动态传入订单ID?

WooCommerce佣金表格动态获取对应订单company字段

步骤1:修改自定义短代码,支持订单ID参数

把原来固定订单ID的短代码回调函数改成支持接收order_id参数的版本,实现动态传入订单ID:

add_shortcode('get_order_company', function($atts) {
    // 初始化短代码参数,默认订单ID为0
    $atts = shortcode_atts(
        array('order_id' => 0),
        $atts,
        'get_order_company'
    );

    // 订单ID为空时直接返回空内容
    if (empty($atts['order_id'])) {
        return '';
    }

    // 获取对应订单并提取company字段
    $order = wc_get_order($atts['order_id']);
    return $order ? $order->get_meta('company') : '';
});

注意:如果你的company字段是带下划线的私有字段(比如_company),请把get_meta('company')改成get_meta('_company')。

步骤2:在佣金表格的product列动态传入订单ID

根据你渲染佣金表格列的方式,选择对应的实现:

  • 通过钩子函数渲染列:
    用woocommerce_commission_table_column_product钩子替换或补充product列的内容,传入当前佣金行的order_id:
    add_action('woocommerce_commission_table_column_product', function($commission) {
        // 输出动态调用的短代码结果
        echo do_shortcode("[get_order_company order_id='{$commission['order_id']}']");
        // 若需要保留原产品名称,可追加:echo ' ' . $commission['product_name'];
    });
    
  • 直接在模板文件中调用:
    如果是在佣金相关模板里直接编写代码,直接把订单ID变量传入短代码:
    echo do_shortcode("[get_order_company order_id='{$commission['order_id']}']");
    

关键注意事项

  • 确保$commission['order_id']在当前上下文是可访问的,若上下文变量名不同,请替换为实际可用的订单ID变量
  • 增加订单存在性判断,避免因无效订单ID导致的报错

内容的提问来源于stack exchange,提问作者Александр Курылев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:20