从Woocommerce中的订单ID获取产品ID [关闭]


38

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

我尝试搜索,wp_postmeta但没有运气。

Answers:


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 2015年

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

@mevius我添加了3+版本的编辑功能,并具有用于检查多种产品的调度功能
Garet Claborn

请参阅调度员的编辑历史记录,如果没有它,这是不好的,因为它会毫无意义地吞噬您的服务器
Garet Claborn

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

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.