2014-02-07 2 views
12

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

+1

Чтобы уточнить: 'order id' равен' post id', как указано в стандартных таблицах Wordpress. «порядковый номер» - это код, представляющий заказ WooCommerce, представленный в таблицах WC. –

ответ

19

он работал. Просто модифицирована это

global $woocommerce, $post; 

$order = new WC_Order($post->ID); 

//to escape # from order id 

$order_id = trim(str_replace('#', '', $order->get_order_number())); 
+0

Я просто попробовал - '$ order-> get_order_number()', и он вернул только идентификатор (не было никаких #). Мне не нужно было заменять это #. Возможно, последнее обновление woocommerce удалило #. Может ли кто-нибудь подтвердить? – Aajahid

+0

Да, я могу подтвердить, что '$ order-> get_order_number()' возвращает только id (нет символа #), поскольку, по крайней мере, версия Woocommerce 2.4 (вплоть до 3.0 и выше). Он может быть переопределен плагинами с помощью фильтра wordpress 'woocommerce_order_number', поэтому лучше предположить, что он предназначен только для отображения и может не быть числовым. Благодаря! – truemedia

9

Я не проверить его и не знаю, были, вам это нужно, но:

$order = new WC_Order(post->ID); 
echo $order->get_order_number(); 

Позвольте мне знать, если он работает. Я верю номеру номера эха с «#», но вы можете разбить его, если только нужно только число.

+0

Я делал это раньше, это не работает, проблема в том, что должно быть в WC_Order для параметра, я думаю, что я должен удалить cookie, а затем уменьшить запас вручную. – moslem

+0

(post-> ID) что он даст? – 981

14

Это довольно старый вопрос сейчас, но кто-то может прийти сюда в поисках ответа:

echo $order->id; 

Это должно вернуть идентификатор заказа без «#».

РЕДАКТИРОВАТЬ (О/2018)

В настоящее время способ достичь этого заключается в использовании:

$order->get_id(); 
+0

Это полезно –

+2

Это возвращает идентификатор сообщения заказа, а не идентификатор заказа. $ Заказ запасного> get_order_number(); это правильный ответ. – piersb

+2

Когда вы ищете что-то подобное в Google, это первый пост. '$ order-> id' больше не поддерживается, вы получите сообщение об ошибке (член имеет защищенный доступ). Но если вы хотите получить ID (не номер заказа), вы можете сделать это с помощью: '$ order-> get_id();' – emilushi

1
$order = new WC_Order($post_id); 

Если вы

echo $order->id; 

, то вы будете возвращены идентификатор поста, из которого сделан заказ. Как вы уже это сделали, это, вероятно, не то, что вы хотите.

echo $order->get_order_number(); 

вернет идентификатор заказа (с # перед ним). Чтобы избавиться от #,

echo trim(str_replace('#', '', $order->get_order_number())); 

в соответствии с принятым ответом.

0

По WooCommerce 3.0

$order->id; 

не будет работать, он будет генерировать уведомление, использовать функцию геттер:

$order->get_id(); 

То же самое относится к другим объектам WooCommerce как Procut.

Смежные вопросы