Получить заказ по номеру заказа через WooCommerce WC_Order_Query - PullRequest
1 голос
/ 19 марта 2020

Как я могу получить заказ WooCommerce по его номеру (вместо его идентификатора)?

Я пытался использовать wc_get_orders с пользовательскими аргументами, например:

wc_get_orders( array( 'number' => '1000' ) );

Но это не так похоже на работу.

Спасибо!

1 Ответ

1 голос
/ 19 марта 2020

Функциональность номеров заказов действительно включена через сторонний плагин в WooCommerce ... Тогда в этом случае в таблице wp_postmeta существует новая meta_key таблица для shop_order типа записи WooCommerce, которая _order_number.

Таким образом, этот параметр не существует по умолчанию при использовании wc_get_orders() WC_Order_Query) .

Но вы можете добавить / включить "number "параметр с использованием следующего кода:

add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'handle_order_number_custom_query_var', 10, 2 );
function handle_order_number_custom_query_var( $query, $query_vars ) {
    if ( ! empty( $query_vars['number'] ) ) {
        $query['meta_query'][] = array(
            'key' => '_order_number',
            'value' => esc_attr( $query_vars['number'] ),
        );
    }

    return $query;
}

Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.

Теперь вы можете использовать параметр number, чтобы получить заказ по номеру заказа через WC_Order_Query:

$order = wc_get_orders( array( 'number' => 1000 ) );

См. В документации: Добавление поддержки пользовательских параметров в WC_Order_Query .

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