Woocommerce'daki sipariş kimliğinden Ürün kimliğini al [kapalı]


38

Woocommerce ürün detayları ve sipariş detayları ilişkisi ile ilgili sorun yaşıyorum. İlgili bir sipariş kimliğinin ürün kimliğini Woocommerce temasının Siparişleri Görüntüle sayfasında bulamıyorum. Siparişleri görüntüle sayfasında ürün içeriği ve kalıcı bağlantı vb. Öğelerini almak istiyorum .

Aramaya çalıştım wp_postmetaama şansım olmadı.

Yanıtlar:


68

WooCommerce 3.0+

tarafından bir siparişin sipariş kalemlerini alabilirsiniz.

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

Öyleyse öğeler arasında dolaşırsanız tüm ilgili verileri elde edebilirsiniz:

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

İyi bir ipucu, yönetici siparişi sayfalarının verileri nasıl aldığını kontrol etmektir, burada birçok cevap bulacaksınız!

WooCommerce 3.0 öncesi

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

Bir şeyi kaçırmazsam, bu WooCommerce’in en son sürümünde işe yaramaz ...
rnevius

Hala benim için WooCommerce 2.4.8'de çalışıyor, ancak $ order_id değişkenini tanımlamanız gerekiyor (içeriğinize bağlı olarak bazen $ order-> kimliğinde olabilir).
Ewout

@mevius, birden fazla ürünü kontrol etmek için sevkıyat işlevine sahip 3+ için bir düzenleme ekledi
Garet Claborn

dağıtım programı için düzenleme geçmişini görün, sunucunuzu amaçsızca yiyeceği için onsuz iyi değil
Garet Claborn

@GaretClaborn, tamamen bu verilerle neler yaptığınıza bağlı. 'olduğu gibi', bu örnek pasajı hiçbir şekilde hafıza israfı yapmaz.
Ewout

6

Üzerinde çalıştım ve bir şey başardım. Diğer geliştiricilere paylaşmak istiyorum. Bunu yapmak için tercih edilen bir yol değildir, ancak bilgi için cevabımı gönderiyorum.

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

umut birine yardım edecek.

Bunlara ek olarak:

Birden fazla web sitesinde veya geçişinde vb. Sorunlardan kaçınmak için wordpress tablo öneki kullanmak daha iyi

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

1
@ErenorPaz Teşekkürler, yorumunuza cevap olarak cevap olarak içerik ekledim :)
arslaan ejaz

Hızlı yanıt aldığın için teşekkürler, eski bir iş parçacığında bile! Eski yorumlarımı sileceğim şu anda modası geçmiş çünkü :)
Erenor Paz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.