Woocommerceの注文IDから製品IDを取得[終了]


38

Woocommerce製品の詳細と注文の詳細の関係に問題があります。Woocommerceテーマの[View Orders]ページで、関連する注文IDの製品IDを見つけることができません。[注文の表示]ページで商品コンテンツやパーマリンクなどを取得したいだけです。

検索してみましwp_postmetaたが、運がありませんでした。

回答:


68

WooCommerce 3.0+

注文の注文アイテムを取得するには

$order = wc_get_order( $order_id );
$items = $order->get_items();

その後、アイテムをループすると、すべての関連データを取得できます。

foreach ( $items as $item ) {
    $product_name = $item->get_name();
    $product_id = $item->get_product_id();
    $product_variation_id = $item->get_variation_id();
}

管理者の注文ページがデータを取得する方法を確認することをお勧めします。そこには多くの答えがあります。

Pre-WooCommerce 3.0

$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
    $product_name = $item['name'];
    $product_id = $item['product_id'];
    $product_variation_id = $item['variation_id'];
}

何かが足りない場合を除き、これはWooCommerceの最新バージョンでは機能しないようです
...-rnevius

私にとってはWooCommerce 2.4.8でも動作しますが、$ order_id変数を定義する必要があります(コンテキストによっては、$ order-> idにある場合もあります)。
ユーアウト

私は複数の製品をチェックするためのディスパッチ機能付き3+の編集追加@mevius
Garet Claborn

それは無意味にサーバーをセットアップ食べるようになると、これはそれなしで良いではない、ディスパッチャのための編集履歴を参照してください
Garet Claborn

@GaretClabornは、このデータで何をしているかに完全に依存しています。「現状のまま」、このサンプルスニペットはメモリを無駄にすることはありません。
ユーアウト

6

私はそれに取り組み、何かを達成しました。他の開発者と共有したいこと。これは好ましい方法ではありませんが、知識のために回答を投稿しています。

global $wpdb;
            $result = $wpdb->get_results('select t1.order_item_id, t2.* FROM 
            wp_woocommerce_order_items as t1 JOIN wp_woocommerce_order_itemmeta as t2 ON t1.order_item_id = t2.order_item_id
            where t1.order_id='.$order->ID);
            echo '<pre>';
            print_r($result);
            echo '</pre>'; 

誰かが助けてくれることを願っています。

さらに:

複数のWebサイトや移行などの問題を回避するために、wordpressテーブルプレフィックスを使用することをお勧めします。

global $wpdb;
$table_name = $wpdb->prefix . 'table_name'; 

1
@ErenorPazありがとう、回答にコンテンツを追加しました、あなたのコメントへの返信:)
アルスラーンejaz

古いスレッドでも高速応答をありがとう!今は古くなっているので、以前のコメントを削除します:)
Erenor Paz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.