【问题标题】:How to query Woocommerce orders on a page如何在页面上查询 Woocommerce 订单
【发布时间】:2019-01-27 13:18:38
【问题描述】:

我想创建一个页面来显示来自数据库的查询以显示一些订单详细信息。

如何在页面上显示此查询?

【问题讨论】:

    标签: php mysql wordpress woocommerce orders


    【解决方案1】:

    有多种方式可以获得 Woocommerce 订单:

    1) Woocommerce 有一个专用函数wc_get_orders(),它将为您提供一组 WC_Order 对象:

    $orders = wc_get_orders( array('numberposts' => -1) );
    
    // Loop through each WC_Order object
    foreach( $orders as $order ){
        echo $order->get_id() . '<br>'; // The order ID
        echo $order->get_status() . '<br>'; // The order status
    }
    

    要获取订单数据,请参阅下面的链接


    2) 你也可以使用 Wordpress WP_Query:

    $loop = new WP_Query( array(
        'post_type'         => 'shop_order',
        'post_status'       =>  array_keys( wc_get_order_statuses() ),
        'posts_per_page'    => -1,
    ) );
    
    // The Wordpress post loop
    if ( $loop->have_posts() ): 
    while ( $loop->have_posts() ) : $loop->the_post();
    
    // The order ID
    $order_id = $loop->post->ID;
    
    // Get an instance of the WC_Order Object
    $order = wc_get_order($loop->post->ID);
    
    endwhile;
    
    wp_reset_postdata();
    
    endif;
    

    要获取订单数据,请参阅下面的链接


    3) 您可以使用 SQL 查询

    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type LIKE 'shop_order'");
    
    // Loop through each order post object
    foreach( $results as $result ){
        $order_id = $result->ID; // The Order ID
    
        // Get an instance of the WC_Order Object
        $order    = wc_get_order( $result->ID );
    }
    

    您将能够从WC_Order object 获取所有订单详细信息,如下所述:


    将数据显示为表格中的列表

    要在列表中显示订单,您应该查看 woocommerce 已弃用模板 myaccount/my-orders.phpmyaccount/orders.php template...

    它会给你一个模型……

    【讨论】:

    • 哦,太好了...谢谢!我喜欢第三个选项,因为我有一个我想使用的自定义查询。我假设我会用我想要使用的那个替换你的 sql 查询 "SELECT * FROM {$wpdb->prefix}p..."?
    • 好的太棒了..我实际上将您提供的整段代码放在哪里?它进入functions.php吗?我如何真正让它显示?
    • @Michelle 您可以将其嵌入到自定义短代码函数中,然后将其放入您的 function.php 中……然后您将能够在任何地方使用它来获得显示。见some examples of shortcodes functions
    • 酷..谢谢!有没有更简单的添加方法?简码略高于我的经验水平!
    • 完成!我还用我的“代码”开始了一个新问题 - stackoverflow.com/questions/51950316/… 谢谢!
    【解决方案2】:

    只要是执行的最后一个查询,就可以使用$wpdb-&gt;last_query 抓取最后一个查询。为此,您需要在 wp-config.php 中添加 define('SAVEQUERIES', true)

    【讨论】:

    • OP 不是在谈论“最后一个查询”,而是如何运行查询并显示结果......
    • 对不起......我的意思是......我想创建一个供应商可以登录的页面,其中列出了所有新订单,实时。所以我正在寻找用于在页面上显示查询的代码。谢谢!
    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2015-04-24
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多