我在Woocommerce产品详细信息和订单详细信息关系方面遇到麻烦。我无法在Woocommerce主题的“查看订单”页面上找到相关订单ID的产品ID。我只想在“查看订单”页面上获取产品内容和永久链接等。

我尝试在wp_postmeta中进行搜索,但没有运气。

#1 楼



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
2015年11月9日17:34

对于我来说,它仍然可以在WooCommerce 2.4.8中使用,但是您需要定义$ order_id变量(有时它位于$ order-> id中,具体取决于您的上下文)。

– Ewout
2015年11月10日14:25

@mevius我为3+添加了带有调度功能的编辑,用于检查多个产品

–加勒特·克拉伯恩(Garet Claborn)
17-10-20在17:40

请参阅调度程序的编辑历史记录,如果没有它就不好了,因为它会毫无意义地吞噬您的服务器

–加勒特·克拉伯恩(Garet Claborn)
17年11月22日在19:46

@GaretClaborn完全取决于您对这些数据的处理方式。 “按原样”,此示例代码片段不会以任何方式浪费内存。

– Ewout
17年11月27日在13:44

#2 楼

我努力工作并取得了一些成就。我想与其他开发者分享。这不是首选的方法,但出于知识,我会发布我的答案。

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


评论


@ErenorPaz谢谢,我在回答中添加了内容,以回复您的评论:)

– Arslaan ejaz
16-10-25在8:33

谢谢您即使在旧线程上也能快速响应!我将删除以前的评论,因为它已经过时了:)

– Erenor Paz
16-10-25在10:40