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,提问作者Александр Курылев
相关产品推荐
相关产品推荐

