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

WooCommerce我的账户订单添加物流追踪按钮无效,求排查

排查WooCommerce我的账户订单追踪按钮不生效的问题

以下是几个常见的错误原因及解决办法:

1. 自定义字段未正确设置

你的代码依赖_tracking_link这个自定义字段获取追踪链接,若出现以下情况按钮不会显示:

  • 该字段从未被添加到订单中
  • 字段值为空
  • 元键名称写错(比如大小写、下划线位置错误)

验证方式:

  • 进入订单编辑页面,开启屏幕选项的「自定义字段」,查看是否存在_tracking_link字段且有有效链接值;
  • 临时添加调试代码确认字段值:
// 在函数内添加
error_log( '订单ID ' . $order_id . ' 的追踪链接:' . $tracking_link );

随后查看WordPress的debug.log文件,确认是否输出正确链接。

2. 主题重写了我的订单模板

不少自定义主题会重写WooCommerce的myaccount/orders.php模板,若主题模板未调用woocommerce_my_account_my_orders_actions钩子,或直接硬编码操作按钮,你的代码会失效。

解决办法:

  • 检查子主题的woocommerce/myaccount/orders.php文件,确认是否存在以下循环输出操作按钮的代码:
<?php foreach ( $actions as $key => $action ) : ?>
  <a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ); ?>"><?php echo esc_html( $action['name'] ); ?></a>
<?php endforeach; ?>

若没有,需修改模板添加这段代码,或直接在模板中手动插入追踪按钮。

3. 缓存导致代码未生效

WordPress缓存插件(如WP Rocket、W3 Total Cache)或服务器缓存可能延迟新代码生效:

  • 清除缓存插件的缓存;
  • 用Ctrl+Shift+R强制刷新浏览器清除本地缓存;
  • 若为服务器缓存,联系主机商协助清除。

4. 钩子优先级冲突

若其他插件/主题使用相同钩子且优先级更高,可能覆盖你的操作。可尝试提高优先级,将钩子的10改为99:

add_filter( 'woocommerce_my_account_my_orders_actions', 'my_code_add_myaccount_order_track_button', 99, 2 );

5. 补充:订单状态限制(可选)

若仅需对特定状态订单显示按钮,可在函数内添加状态判断:

// 示例:仅对已完成订单显示
if ( $order->has_status( 'completed' ) && ! empty( $tracking_link ) ) {
    $actions['track'] = array(
        'url'  => $tracking_link,
        'name' => __( 'Track', 'woocommerce' ),
    );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:46