如何在 WooCommerce 的订单支付页面上检索订单 ID
Posted
技术标签:
【中文标题】如何在 WooCommerce 的订单支付页面上检索订单 ID【英文标题】:How to retrieve order ID on Order Pay page in WooCommerce 【发布时间】:2021-02-12 22:06:24 【问题描述】:我正在尝试修改 Woocomerce 结帐页面以处理失败或待付款的订单。在这些订单上,系统结账时已经生成了一个订单,但我无法从 form_checkout.php 模板中检索到该订单的 ID。
客户可以使用 Woocommerce URL 支付失败的订单,类似于以下:
https://myurl.com/checkout/order-pay/XXXXX/?pay_for_order=true&key=wc_order_XXXXXXXXXXXX&subscription_renewal=true
我也不使用 $_GET 检索变量,因为访问时 URL 会转换为 https://myurl.com/checkout。我不知道你是否丢失了这些数据,或者我可以在哪里收集它。
这可能吗?
【问题讨论】:
【参考方案1】:要在订单支付页面上检索订单 ID,您将使用以下内容:
global $wp;
if ( isset($wp->query_vars['order-pay']) && absint($wp->query_vars['order-pay']) > 0 )
$order_id = absint($wp->query_vars['order-pay']); // The order ID
$order = wc_get_order( $order_id ); // Get the WC_Order Object instance
注意:要定位订单支付页面,可以使用is_wc_endpoint_url('order-pay')
条件标签。
【讨论】:
感谢@LoicTheAztec,这正是我想要的。非常感谢您的回复。 但是,使用 is_wc_endpoint_url('order-pay') 我有同样的问题,端点丢失在 URL 中,看起来像这样:myurl.com/结帐/【参考方案2】:$order = wc_get_order(get_query_var('order-pay'));
【讨论】:
以上是关于如何在 WooCommerce 的订单支付页面上检索订单 ID的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce Admin创建订单并在订单支付上添加运费
如何通过 WooCommerce 中管理员端的更改订单设置支付网关