2014-02-07 61 views

回答

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()',它只返回了id(沒有任何#)。我不需要替換#。 可能最新的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; 

這將返回訂單ID沒有「#」。

EDIT(FEV/2018)

解決這個問題的當前方法是通過使用:

$order->get_id(); 
+0

這很有幫助 –

+2

這將返回訂單過帳的ID,而不是訂單的ID。 $命令 - > get_order_number();是正確的答案。 – piersb

+2

當你在谷歌搜索類似的東西時,這是第一篇文章。 '$ order-> id'不再支持,您將收到錯誤信息(會員已保護訪問權限)。 但是如果你想獲得ID(不是訂單號),你可以這樣做: '$ order-> get_id();' – emilushi

1
$order = new WC_Order($post_id); 

如果

echo $order->id; 

,那麼你就可以返回從訂單發的帖子的ID。正如你已經知道的那樣,這可能不是你想要的。

echo $order->get_order_number(); 

將返回訂單的ID(在其前面有一個#)。爲了擺脫#,

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

根據公認的答案。

0

由於woocommerce 3.0

​​

將無法​​正常工作,它會生成通知,使用getter功能:

$order->get_id(); 

這同樣適用於像procut其他woocommerce對象。

相關問題