รับรหัสผลิตภัณฑ์จากรหัสคำสั่งซื้อใน 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();
}

เคล็ดลับที่ดีคือการตรวจสอบว่าหน้าสั่งซื้อของผู้ดูแลระบบได้รับข้อมูลอย่างไรคุณจะพบคำตอบมากมายที่นั่น!

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 ขึ้นอยู่กับบริบทของคุณ)
58

@mevius i เพิ่มการแก้ไข 3+ พร้อมฟังก์ชั่นการจัดส่งเพื่อตรวจสอบผลิตภัณฑ์หลายรายการ
Garet Claborn

ดูประวัติการแก้ไขสำหรับโปรแกรมเลือกจ่ายงานนี้ไม่ดีหากไม่มีเพราะจะทำให้เซิร์ฟเวอร์ของคุณไม่มีจุดหมาย
Garet Claborn

@GaretClaborn ที่ขึ้นอยู่กับสิ่งที่คุณทำกับข้อมูลนี้ทั้งหมด 'ตามที่เป็นอยู่' ตัวอย่างนี้ไม่เสียความทรงจำ แต่อย่างใด
2560

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

หวังว่าจะช่วยใครบางคน

นอกจากนี้:

ดีกว่าที่จะใช้คำนำหน้าตาราง wordpress เพื่อหลีกเลี่ยงปัญหาในหลายเว็บไซต์หรือในการโยกย้าย ฯลฯ

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

1
@ErenorPaz ขอบคุณฉันเพิ่มเนื้อหาในคำตอบในการตอบกลับความคิดเห็นของคุณ :)
arslaan ejaz

ขอบคุณสำหรับการตอบสนองที่รวดเร็วแม้กระทั่งบนเธรดเก่า! ฉันจะลบความคิดเห็นก่อนหน้าของฉันเนื่องจากมันล้าสมัยแล้วในตอนนี้ :)
Erenor Paz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.