Woocommerce: получение данных по последнему заказу - PullRequest
0 голосов
/ 21 января 2019

До сих пор мне удавалось получить ID последнего выполненного заказа, сделанного с использованием этого:

<?php

function get_last_order_id(){
  global $wpdb;
  $statuses = "wc-completed";

  // Getting last Order ID (max value)
  $results = $wpdb->get_col( "
      SELECT MAX(ID) FROM {$wpdb->prefix}posts
      WHERE post_type LIKE 'shop_order'
      AND post_status IN ('$statuses')
  " );
 return reset($results);
}

$latest_order_id = get_last_order_id();
echo ($latest_order_id);

Однако вместо того, чтобы получить ID, я бы хотел получить billing_first_name. Кто-нибудь знает, как его получить?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы также можете использовать запрос на соединение, пожалуйста, проверьте следующий запрос на то же самое.

    SELECT MAX(P.ID) ,PM.meta_value as firstname
    FROM {$wpdb->prefix}posts AS P
    INNER JOIN {$wpdb->prefix}postmeta AS PM
    ON P.ID = PM.post_id

     WHERE P.post_type LIKE 'shop_order'
        AND P.post_status IN ('$statuses')
        AND PM.meta_key='_billing_first_name'

Просто замените ваш запрос на данный.

Таким образом, полный код следующий.

        <?php
        function get_last_order_id()
        {
            global $wpdb;
            $statuses = "wc-completed";

            // Getting last Order ID (max value)
            $results = $wpdb->get_col( "
                SELECT MAX(P.ID) ,PM.meta_value
                    FROM {$wpdb->prefix}posts AS P
                    INNER JOIN {$wpdb->prefix}postmeta AS PM
                    ON P.ID = PM.post_id

                     WHERE P.post_type LIKE 'shop_order'
                        AND P.post_status IN ('$statuses')
                        AND PM.meta_key='_billing_first_name'
            " );
            return reset($results);
        }

        $latest_order_id = get_last_order_id(); // Last order ID
        echo ($latest_order_id);
0 голосов
/ 21 января 2019

Попробуйте это

<?php
    function get_last_order_id(){
        global $wpdb;
        $statuses = "wc-completed";

        // Getting last Order ID (max value)
        $results = $wpdb->get_row( "SELECT MAX(P.ID) ,PM.meta_value as firstname
                FROM {$wpdb->prefix}posts AS P
                INNER JOIN {$wpdb->prefix}postmeta AS PM
                ON P.ID = PM.post_id

                 WHERE P.post_type LIKE 'shop_order'
                    AND P.post_status IN ('$statuses')
                    AND PM.meta_key='_billing_first_name'" );
        return $results;
    }
    $latest_order_id = get_last_order_id(); // Last order ID
    $firstname = $latest_order_id->firstname;


    echo $firstname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...