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

WooCommerce后台添加order-received URL按钮失败求助

WooCommerce订单完成页(order-received)URL显示问题排查与修复

问题背景

按照2年多前的教程操作后,不管是后台「订单详情页」还是前台「我的账户-订单列表」,都看不到带order-received URL的链接,大概率是WooCommerce版本更新导致函数/钩子变化,或是教程本身的操作存在局限性。

常见问题原因

  • 模板修改无效:教程让改WooCommerce核心模板woocommerce/templates/my-account/orders.php,但如果你的主题有自定义的WooCommerce子模板(路径是当前主题/woocommerce/my-account/orders.php),修改核心模板根本不会生效,而且WooCommerce更新还会覆盖核心模板的修改。
  • 代码范围不对:教程里的代码只针对前台「我的账户」订单列表,完全没涉及后台订单页面,这就是你后台看不到链接的直接原因。
  • 函数兼容性问题:旧版本的函数可能被调整,直接用wc_get_endpoint_url拼接URL比依赖旧函数更稳妥。

修正方案

所有代码请添加到当前主题的functions.php文件,或使用Code Snippets这类自定义代码插件,不要修改WooCommerce核心文件。

一、前台「我的账户-订单列表」显示链接(替代教程步骤)

// 给前台我的账户订单列表添加自定义列
add_filter( 'woocommerce_account_orders_columns', 'add_order_received_url_column' );
function add_order_received_url_column( $columns ) {
    $columns['order-received-link'] = __( '订单完成页', 'woocommerce' );
    return $columns;
}

// 渲染自定义列的按钮与链接
add_action( 'woocommerce_my_account_my_orders_column_order-received-link', 'render_order_received_url_column' );
function render_order_received_url_column( $order ) {
    // 生成带订单密钥的完成页URL
    $order_received_url = wc_get_endpoint_url( 'order-received', $order->get_id(), wc_get_checkout_url() );
    $order_received_url = add_query_arg( 'key', $order->get_order_key(), $order_received_url );
    
    echo '<a href="' . esc_url( $order_received_url ) . '" class="woocommerce-button button">查看订单完成页</a>';
}

二、后台订单列表显示链接

// 给后台订单列表添加自定义列
add_filter( 'manage_edit-shop_order_columns', 'add_admin_order_received_column' );
function add_admin_order_received_column( $columns ) {
    $columns['order-received-url'] = __( '订单完成页链接', 'woocommerce' );
    return $columns;
}

// 渲染后台自定义列的链接
add_action( 'manage_shop_order_posts_custom_column', 'render_admin_order_received_column', 10, 2 );
function render_admin_order_received_column( $column, $post_id ) {
    if ( $column === 'order-received-url' ) {
        $order = wc_get_order( $post_id );
        if ( $order ) {
            $order_received_url = wc_get_endpoint_url( 'order-received', $order->get_id(), wc_get_checkout_url() );
            $order_received_url = add_query_arg( 'key', $order->get_order_key(), $order_received_url );
            
            echo '<a href="' . esc_url( $order_received_url ) . '" target="_blank">打开链接</a>';
        }
    }
}

三、后台订单详情页添加按钮

// 在后台订单详情页添加订单完成页按钮
add_action( 'woocommerce_admin_order_data_after_order_details', 'add_order_received_button_in_admin' );
function add_order_received_button_in_admin( $order ) {
    $order_received_url = wc_get_endpoint_url( 'order-received', $order->get_id(), wc_get_checkout_url() );
    $order_received_url = add_query_arg( 'key', $order->get_order_key(), $order_received_url );
    
    echo '<div style="margin-top:15px;">
            <a href="' . esc_url( $order_received_url ) . '" class="button" target="_blank">查看订单完成页</a>
          </div>';
}

注意事项

  • 上述代码兼容WooCommerce 3.0及以上版本,最新版也可正常使用。
  • 如果仍不显示,先禁用其他插件排查冲突,或检查主题是否覆盖了相关钩子。

内容的提问来源于stack exchange,提问作者Paulo do Porto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:49:50