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

如何让WooCommerce我的账户订单页的Track按钮始终排在首位?

解决WooCommerce我的账户订单页Track按钮置顶问题

问题分析

你之前的jQuery代码失效原因有两个:

  1. 选择器错误:按钮的类是ast_track,你写的.track匹配不到目标元素
  2. 目标容器错误:你操作的是账户导航栏(.woocommerce-MyAccount-navigation),但Track按钮实际在订单操作按钮区域里

方案一:修正jQuery代码

确保选择正确的按钮和容器,同时考虑按钮可能是动态加载的(比如通过AJAX加载订单),可以用以下代码:

jQuery(document).ready(function($) {
    // 遍历每个订单的操作按钮容器,将Track按钮移到最前面
    $('.woocommerce-orders-table__cell-order-actions').each(function() {
        $(this).find('.ast_track').prependTo(this);
    });

    // 适配AJAX加载的订单(比如分页加载),监听DOM变化自动调整
    $(document).on('DOMNodeInserted', '.woocommerce-orders-table__cell-order-actions', function() {
        $(this).find('.ast_track').prependTo(this);
    });
});

方案二:CSS Flex布局调整(更简单)

如果订单操作按钮容器是flex布局,直接通过order属性调整顺序即可:

/* 将Track按钮设为最前 */
.woocommerce-orders-table__cell-order-actions .ast_track {
    order: -1;
    /* 可选:调整按钮间距,和其他按钮保持一致 */
    margin-right: 0.5em;
}

方案三:PHP钩子修改(无JS依赖,更稳定)

通过WooCommerce的钩子直接修改按钮输出顺序,找到插件添加Track按钮的钩子,调整优先级:

add_filter('woocommerce_my_account_my_orders_actions', 'move_track_button_to_first', 10, 2);
function move_track_button_to_first($actions, $order) {
    // 检查是否存在Track按钮
    if (isset($actions['track'])) {
        // 取出Track按钮
        $track_action = $actions['track'];
        // 删除原有位置的Track按钮
        unset($actions['track']);
        // 将Track按钮插入到数组开头
        $actions = array_merge(['track' => $track_action], $actions);
    }
    return $actions;
}

注意:这个方法需要确认插件添加的按钮key是track,如果不是,替换成页面源码中按钮的data-action属性值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:35:13