Dapatkan id Produk dari id pesanan di Woocommerce [ditutup]


38

Saya mengalami masalah dengan detail produk Woocommerce dan hubungan detail pesanan. Saya tidak dapat menemukan ID produk dari ID pesanan terkait di halaman Lihat Pesanan pada tema Woocommerce. Saya hanya ingin mendapatkan konten produk dan permalink dll di halaman Lihat Pesanan .

Saya mencoba mencari wp_postmetatetapi tidak berhasil.

Jawaban:


68

WooCommerce 3.0+

Anda bisa mendapatkan item pesanan dari pesanan oleh

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

maka jika Anda menelusuri item, Anda bisa mendapatkan semua data yang relevan:

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

tip yang baik adalah untuk memeriksa bagaimana halaman pesanan admin mendapatkan data, Anda akan menemukan banyak jawaban di sana!

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

Kecuali saya kehilangan sesuatu, ini sepertinya tidak berfungsi di versi terbaru WooCommerce ...
rnevius

Masih berfungsi di WooCommerce 2.4.8 untuk saya, tetapi Anda harus menentukan variabel $ order_id (kadang-kadang dalam $ order-> id, tergantung pada konteks Anda).
Ewout

@mevius saya menambahkan edit untuk 3+ dengan fungsi pengiriman untuk memeriksa beberapa produk
Garet Claborn

lihat edit riwayat untuk operator, ini tidak baik tanpanya karena akan memakan server Anda sia
Garet Claborn

@ GaretClaborn sepenuhnya tergantung pada apa yang Anda lakukan dengan data ini. 'sebagaimana adanya', cuplikan contoh ini tidak menyia-nyiakan memori dengan cara apa pun.
Ewout

6

Saya mengerjakannya dan mencapai sesuatu. Saya ingin berbagi dengan pengembang lain. Ini bukan cara yang disukai untuk melakukannya, tetapi untuk pengetahuan saya memposting jawaban saya.

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>'; 

harapan akan membantu seseorang.

Selain itu:

Lebih baik menggunakan awalan tabel wordpress untuk menghindari masalah di beberapa situs web atau dalam migrasi dll.

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

1
@ErenorPaz Terima kasih, saya menambahkan konten sebagai jawaban, sebagai balasan atas komentar Anda :)
arslaan ejaz

Terima kasih atas tanggapan yang cepat, bahkan pada utas lama! Saya akan menghapus komentar saya sebelumnya, karena sudah ketinggalan zaman sekarang :)
Erenor Paz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.