具有多个参数的Woo-Commerce产品查询

时间:2017-04-19 14:44:46

标签: wordpress woocommerce

我正在尝试根据以下

查询Woo-Commerce产品

精选 流行 促销 免

我正在努力用isotop展示它们所以我必须得到所有产品并根据我的查询给出特定标签来制作过滤器。如果我可以进行4个查询,因为我有4个不同的参数/参数,我很困惑。

我做了4个不同的查询,得到了4个不同数组的结果。但是有问题。

  1. 我在4个阵列上完成了4个查询和保存结果。所以含有相同的产品。我必须过滤所有产品,如果同一产品在多个类别中,我必须免费输入标签功能。正如Isotop的作品。
  2. 如果我使用独特的marge数组,它将不会显示多个类别的产品。但是,相同的产品可以分为两类,也可以分为所有类别,因此应在重复的产品中添加标签,并清除重复的产品清单,以便产生具有多重标签的独特产品。
  3. 知道怎么做吗?

    以下是提供所有产品的代码。

    <?php
    
                                    foreach ($filter_attr as $item) {
                                        if ($item == 'featured') {
                                            $meta_query = WC()->query->get_meta_query();
                                            $tax_query = WC()->query->get_tax_query();
                                            $tax_query[] = array(
                                                'taxonomy' => 'product_visibility',
                                                'field' => 'name',
                                                'terms' => 'featured',
                                                'operator' => 'IN',
                                            );
    
                                            $query_args = array(
                                                'post_type' => 'product',
                                                'post_status' => 'publish',
                                                'ignore_sticky_posts' => 1,
                                                'posts_per_page' => '12',
                                                'orderby' => 'date',
                                                'order' => 'desc',
                                                'meta_query' => $meta_query,
                                                'tax_query' => $tax_query,
                                            );
    
    
                                            $loop = new WP_Query($query_args);
    
                                            if ($loop->have_posts()) {
                                                while ($loop->have_posts()) : $loop->the_post();
    
                                                    $featured_product = array(
                                                    "type"=>$item,
                                                    "product" => get_the_ID(),
                                                    );
    
                                               endwhile;
                                            }  else {
                                                echo __('No products found');
                                            }
                                            wp_reset_postdata();
    
                                        }  elseif($item == 'popular'){
    
                                            $query_args = array(
                                                'post_type'           => 'product',
                                                'post_status'         => 'publish',
                                                'ignore_sticky_posts' => 1,
                                                'posts_per_page'      => '12',
                                                'meta_key'            => 'total_sales',
                                                'orderby'             => 'meta_value_num'
                                            );
    
                                            $loop = new WP_Query($query_args);
    
                                            if ($loop->have_posts()) {
    
                                                while ($loop->have_posts()) : $loop->the_post();
    
                                                    $id=array();
    
                                                    $popular_product = array(
                                                        "type"=>$item,
                                                        "product" => get_the_ID(),
                                                    );
    
                                                    print_r($popular_product);
    
                                                endwhile;
                                            }  else {
                                                echo __('No products found');
                                            }
                                            wp_reset_postdata();
    
                                        } elseif($item == 'promotional'){
    
                                            $query_args = array(
                                                'posts_per_page' => 12,
                                                'post_type' => 'product',
                                                'meta_key' => '_sale_price',
                                                'meta_value' => '0',
                                                'meta_compare' => '>='
                                            );
    
                                            $loop = new WP_Query($query_args);
    
                                            if ($loop->have_posts()) {
    
                                                while ($loop->have_posts()) : $loop->the_post();
    
                                                    $id=array();
    
                                                    $promotional_product = array(
                                                        "type"=>$item,
                                                        "product" => get_the_ID(),
                                                    );
    
                                                   print_r($promotional_product);
    
                                                endwhile;
                                            }  else {
                                                echo __('No products found');
                                            }
                                            wp_reset_postdata();
                                        } elseif($item == 'freebies'){
    
                                            $query_args = array(
                                                'posts_per_page' => 12,
                                                'post_type' => array('product', 'product_variation'),
                                                'meta_query' => array(
                                                    array(
                                                        'key' => '_price',
                                                        'value' => 0,
                                                        'compare' => '<=',
                                                        'type' => 'NUMERIC'
                                                    )
                                                )
                                            );
    
    
                                            $loop = new WP_Query($query_args);
    
                                            if ($loop->have_posts()) {
    
                                                while ($loop->have_posts()) : $loop->the_post();
    
                                                    $id=array();
    
                                                    $freebies_product = array(
                                                        "type"=>$item,
                                                        "product" => get_the_ID(),
                                                    );
    
                                                    print_r($freebies_product);
    
                                                endwhile;
                                            }  else {
                                                echo __('No products found');
                                            }
                                            wp_reset_postdata();
                                        }
                                    }
    
                                    ?>
    

0 个答案:

没有答案