【问题标题】:WooCommerce Query Order Items by Product MetaWooCommerce 按产品元查询订单项目
【发布时间】:2013-12-04 04:42:04
【问题描述】:

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

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

例如,假设我有这些订单待处理:

订单A

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

订单 B

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

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

具有元密钥 A 的产品

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

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

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

我的 DB 技能有限,因此不胜感激!

【问题讨论】:

    标签: mysql wordpress woocommerce


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2015-09-05
      • 2018-12-09
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多