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

WordPress自定义结账感谢页无订单摘要问题排查与修复

问题修复方案

你的问题根源是重定向时未传递订单ID参数,Elementor的订单摘要组件需要订单ID才能加载对应订单的信息,以下是两种解决方法:

方案一:修复自定义重定向代码

修改你的PHP代码,在重定向URL中携带订单ID参数,让Elementor组件能读取到订单数据:

public function redirect_customer_after_order( $order_id )
{
    if ( is_checkout() && isset( $GLOBALS['wp']->query_vars['order-received'] ) ) {
        // 拼接订单ID到重定向URL
        $redirect_url = add_query_arg( 'order_id', $order_id, site_url( 'riepilogo-ordine' ) );
        wp_safe_redirect( $redirect_url );
        exit;
    }
}
add_action('woocommerce_thankyou', array($this, 'redirect_customer_after_order'));

额外配置(若组件未自动识别)

进入Elementor编辑你的自定义感谢页,找到订单摘要组件,在设置中把订单ID来源改为「URL参数」,参数名填写order_id即可。

方案二:无需代码,直接通过Woocommerce配置

完全替换自定义重定向逻辑,用Woocommerce原生设置绑定Elementor页面:

  • 打开Elementor编辑你的riepilogo-ordine页面,添加Woocommerce「订单摘要」组件并调整样式
  • 进入WordPress后台→WooCommerce→设置→高级→订单页面,将「感谢页面」选择为你创建的riepilogo-ordine页面
  • 保存设置后,Woocommerce会自动在结账完成后跳转到该页面,并自动传递订单信息,无需自定义代码

安全补充(可选)

如果用方案一,为防止他人通过修改URL参数查看他人订单,可添加以下代码验证访问权限:

add_action( 'template_redirect', function() {
    if ( is_page( 'riepilogo-ordine' ) && isset( $_GET['order_id'] ) ) {
        $order = wc_get_order( $_GET['order_id'] );
        // 验证当前用户是订单所有者
        if ( ! $order || $order->get_user_id() !== get_current_user_id() ) {
            wp_safe_redirect( home_url() );
            exit;
        }
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:42:35