web-dev-qa-db-ja.com

Woocommerceの注文IDから商品IDを取得する

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

私はwp_postmetaで検索しようとしましたが、運がありませんでした。

36
arslaan ejaz

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();
}

良いアドバイスは、管理注文ページがどのようにデータを取得するかをチェックすることです、あなたはそこに多くの答えを見つけるでしょう!

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'];
}
66
Ewout

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

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'; 
5
arslaan ejaz