WooCommerce按产品元查询订单项目

时间:2013-12-04 04:42:04

标签: mysql wordpress woocommerce

这有点奇怪,但我找不到如何做到这一点的答案:

我正在尝试创建一个自定义查询,以获取WooCommerce订单中包含的所有产品(及其元数据)。

例如,假设我将这些订单挂起:

订单A

  • 产品1
  • 产品2
  • 产品3

订单B

  • 产品4
  • 产品5
  • 产品6

我的目标是根据这些订购的产品创建一个列表,该列表由产品的元订购。像这样:

使用Meta Key A的产品

  • 产品1
  • 产品3
  • 产品4

但同样,这些只是订单中的产品(包括其数量)。

我面临的问题是存储在数据库中的“订购商品”和“订购商品元素”非常有限,并且不会显示与产品相关的所有信息。换句话说,我没有找到一种方法来获取创建循环以创建列表所需的信息。

我的数据库技能有限,所以我们非常感谢您的想法!

1 个答案:

答案 0 :(得分:0)

以下是一些可能对您有帮助的相关代码:

add_filter( 'woocommerce_shop_order_search_fields', 'woocommerce_shop_order_search_product_cat' );

function woocommerce_shop_order_search_product_cat( $search_fields ) {

$args = array(
    'post_type' => 'shop_order'
    );

$orders = new WP_Query($args);

if($orders->have_posts()) {
        while($orders->have_posts()) {
        $post = $orders->the_post();
        $order_id = get_the_ID();
        $order = new WC_Order($order_id);
        $items = $order->get_items();
        foreach($items as $item) {
            $product_cats = wp_get_post_terms( $item['product_id'], 'product_cat' );
            foreach($product_cats as $product_cat) {
                add_post_meta($order_id, "_product_cat", $product_cat->name);
            }
        }
    }
};

$search_fields[] = '_product_cat';

return $search_fields;

}