Woocomerce:如何"不显示"产品分类在店铺页面

时间:2018-05-03 17:45:10

标签: php wordpress woocommerce

我想不要显示所有类别名称为" shoes"在商店页面。

我的意思是在商店页面显示所有具有鞋类别名称的产品,并且我会在另一个页面中添加鞋子产品(我创建一个鞋子页面,并将所有鞋子产品添加到其中)所以请帮助我(我需要使用代码php或插件)。

谢谢

2 个答案:

答案 0 :(得分:1)

你可以使用woocommerce_product_query钩子,它与pre_get_posts非常相似,只不过它已经有了适当的条件逻辑。

add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

$tax_query = (array) $q->get( 'tax_query' );

$tax_query[] = array(
       'taxonomy' => 'product_cat',
       'field' => 'slug',
       'terms' => array( 'samples' ), 
       'operator' => 'NOT IN'
);


$q->set( 'tax_query', $tax_query );}

答案 1 :(得分:0)

它很容易上手,只需要在功能页面中编写一个功能。

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) { 
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;

if ( ! is_admin() && is_shop() && ! is_user_logged_in() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'shirt', 'tshirt', 'pant' ), //Category name which      not to want display products on the shop page
'operator' => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

不想在商店页面展示产品的类别名称('衬衫','t恤','裤子')

您可以保存页面,然后查看,

如果您看到显示任何错误,则可以从上面的代码列表中删除此代码。

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );