Woocommerce में ऑर्डर आईडी से उत्पाद आईडी प्राप्त करें [बंद]


38

मुझे Woocommerce उत्पाद विवरण और ऑर्डर विवरण संबंध से परेशानी हो रही है। मैं Woocommerce विषय के दृश्य आदेश पृष्ठ पर संबंधित ऑर्डर आईडी की उत्पाद आईडी नहीं ढूंढ पा रहा हूं । मैं केवल दृश्य सामग्री पृष्ठ पर उत्पाद सामग्री और पर्मलिंक आदि प्राप्त करना चाहता हूं ।

मैंने खोजने की कोशिश की 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();
}

एक अच्छा टिप यह जांचने के लिए है कि व्यवस्थापक ऑर्डर पृष्ठों को डेटा कैसे मिलता है, आपको वहां कई उत्तर मिलेंगे!

पूर्व 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 वैरिएबल को परिभाषित करने की आवश्यकता है (कभी-कभी यह $ ऑर्डर में- id, आपके संदर्भ के आधार पर)।
ईवआउट

@mevius ने कई उत्पादों की जाँच के लिए एक प्रेषण समारोह के साथ 3+ के लिए एक संपादन जोड़ा
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>'; 

आशा है कि किसी की मदद करेंगे।

इसके अतिरिक्त:

कई वेबसाइट या माइग्रेशन आदि में समस्याओं से बचने के लिए वर्डप्रेस टेबल उपसर्ग का उपयोग करना बेहतर है।

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

1
@ ErenorPaz धन्यवाद, मैंने आपकी टिप्पणी के उत्तर में सामग्री जोड़ी: :)
arslaan एजाज़

तेजी से प्रतिक्रिया के लिए धन्यवाद, एक पुराने धागे पर भी! मैं अपनी पिछली टिप्पणियों को हटा दूंगा, क्योंकि यह अब पुरानी हो
चुकी है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.