在商店页面中显示特定类别的产品

时间:2013-04-28 作者:aguidis

我知道很多人问这个问题,但我没有找到合适的方法。如何在执行店铺页面的查询之前添加一个简单的meta\\u查询(product\\u cat)。

也许用过滤器?

当做

阿德里安

3 个回复
最合适的回答,由SO网友:adelval 整理而成

商店页面实际上是“产品”类型帖子的归档页面。其模板位于woocommerce/archive产品中。php。

您需要使用pre_get_posts 在循环之前预处理查询的操作,conditional_tags 要识别您在产品存档页面中,以及taxonomy query 筛选属于分类法“product\\u cat”的产品类别。

例如,以下内容(放置在主题的functions.php或插件中)将仅显示产品类别为“type-1”的产品:

 add_action(\'pre_get_posts\',\'shop_filter_cat\');

 function shop_filter_cat($query) {
    if (!is_admin() && is_post_type_archive( \'product\' ) && $query->is_main_query()) {
       $query->set(\'tax_query\', array(
                    array (\'taxonomy\' => \'product_cat\',
                                       \'field\' => \'slug\',
                                        \'terms\' => \'type-1\'
                                 )
                     )
       );   
    }
 }
您还可以使用“operator”=>NOT IN排除类别,“terms”可以是产品类别段塞的数组。

查询定制的一个很好的介绍是http://www.billerickson.net/customize-the-wordpress-query/

SO网友:Chris

这对我很有用:

[product_category category="YOUR CATEGORY" per_page="8" columns="3" orderby="date" order="desc"]

SO网友:Techlyse Solutions

如果您想在商店页面上显示特定类别的产品,可以在主题中插入以下代码function.php 文件

// Execute before the loop starte
add_action( \'woocommerce_before_shop_loop\', \'techlyse_before_action\', 15 );
function techlyse_before_action() {
    //To ensure Shop Page
    if ( is_shop() ) {
        $query_args[\'tax_query\'] =  array(
            array( 
                \'taxonomy\' => \'product_cat\',   
                \'field\' => \'id\',  //If you want the category slug you pass slug instead of id and 1330 instead of category slug. 
                \'terms\' => 1330 
            )
        );  
        //print_r($query_args);
        query_posts( $query_args );
    }
} 

// Execute after the loop ends
add_action( \'woocommerce_after_shop_loop\', \'techlyse_after_action\', 15 );
function techlyse_after_action() {
    //To ensure Shop Page
    if ( is_shop() ) {
        //Reset the Query after Loop
        wp_reset_query();
    }
}

结束

相关推荐

Remove the_content From Loop

我试图显示一个只有特定元素的自定义循环。“我的循环”当前包含标题、创建日期、作者和;所容纳之物然而,我正在尝试删除循环中每个帖子的内容,因为我不希望它在这个列表中显示得不走运。我甚至已经从循环中删除了\\u content();它仍然会在循环部分下显示帖子内容的列表。任何帮助都将不胜感激,这是我的代码:<?php query_posts(\'category_name=halloween &posts_per_page=6\'); ?> <?php if ( have_p