如何从当前订单中获取 WooCommerce 订单 ID?

Posted

技术标签:

【中文标题】如何从当前订单中获取 WooCommerce 订单 ID?【英文标题】:How can I get the WooCommerce order id from current order? 【发布时间】:2020-05-08 19:06:09 【问题描述】:

我目前正在尝试在自定义类中接收当前订单 ID。首先,我正在检查我是否在查看订单页面上。如果是,我正在尝试接收 ID。问题是,返回的 id 是 19 但它应该是 6456,真的很奇怪。我正在我的子主题的functions.php 中初始化我的课程:

public function __construct() 
    if ( is_view_order_page() ) 
        error_log( get_the_ID() );
    

有人知道我该如何解决这个问题吗?

更新:

我的另一个想法是阅读以下请求 uri:

https://localhost/dashboard/view-order/6264/

所以我想出了这个主意:

public function __construct() 
    if ( is_view_order_page() ) 
        $uri_path     = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
        $uri_segments = explode( '/', $uri_path );

        error_log(  $uri_segments[3] );
    

但这并不是我认为的安全和好。如果有更好的方法来做到这一点,请告诉我。非常感谢!

【问题讨论】:

您是否尝试过此解决方案来获取订单 ID? ***.com/a/27963922/3623080 这正是我认为的get_the_ID() 函数。我只跳过了获取订单的部分,因为我什至无法获得正确的 ID developer.wordpress.org/reference/functions/get_the_id 【参考方案1】:

你可以试试这个方法:

public function __construct() 
    if ( is_view_order_page() ) 
        global $wp;
        $order_id = wc_clean( $wp->query_vars['view-order'] );
        $_order = wc_get_order($order_id);
        // some logic

        error_log(  $_order->get_id() );
    

我查过了。没问题

【讨论】:

以上是关于如何从当前订单中获取 WooCommerce 订单 ID?的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce如何从订单对象中获取元值

如何从 WooCommerce 中的订单中获取客户详细信息?

如何在 wordpress/woocommerce 中获取所有订单详细信息? [复制]

获取 Woocommerce 客户订单

获取 Woocommerce 客户订单

在 Woocommerce 订单电子邮件通知中获取用户 ID [重复]