我的WooCommerce自定义中有一个反复出现的问题:如何在函数中获取当前的订单ID。
某些挂钩可以使用$ order_id传递它,但在用户特定订单的帐户页面中,例如,以下内容无效。
问题是$order_id
当然是空的。但是,我如何将订单的ID传递给此函数?
add_action( 'woocommerce_order_items_table', 'xcsn_woocommerce_order_items_table');
function xcsn_woocommerce_order_items_table ( $order_id ) {
$order = new WC_Order( $order_id );
echo 'The order ID is: ' . $order->get_order_number();
// or
echo '<br>The order ID is: ' . $order->id;
}
我尝试了这个,但它返回了用户ID号,而不是订单:
global $woocommerce;
$order = new WC_Order($post->ID);
echo 'The Order ID: ' . $order->get_order_number();
有什么建议吗?
答案 0 :(得分:0)
这解决了上面的特定问题(虽然不是一般性问题):
add_action( 'woocommerce_order_items_table', 'xcsn_woocommerce_order_items_table');
function xcsn_woocommerce_order_items_table ( $order ) {
echo $order->id; //This is the order id, even in the user Accounts>Order page
}
答案 1 :(得分:0)
add_action( 'woocommerce_order_items_table', 'xcsn_woocommerce_order_items_table',10,2);
function xcsn_woocommerce_order_items_table ( $order_id ) {
$order = new WC_Order( $order_id );
echo 'The order ID is: ' . $order->get_order_number();
// or
echo '<br>
The order ID is: ' . $order_id;
}
检查一下你需要在动作上添加10,2,它在成功提交订单后返回订单ID,如果没有这个功能将在提交订单之前运行,所以订单ID可能是0
或null