我在functions.php中添加了以下代码,因为我想只显示组产品到woocommerce商店页面。代码是有效的。问题是单个产品没有显示在产品供应商插件的每个供应商页面下。
插件支持告诉我,要解决这个问题,我下面的代码需要添加一个条件,以便它只在某些页面上运行-否则它将影响整个网站.....
遗憾的是,我不知道该怎么做。
欢迎您的支持!
'''/**
* Show Only Grouped Products in Woocommerce
*/
add_filter( 'woocommerce_product_query_tax_query', 'only_grouped_products', 20, 1 );
function only_grouped_products( $tax_query ){
$tax_query[] = array(
'taxonomy' => 'product_type',
'field' => 'name',
'terms' => array('grouped'),
);
return $tax_query;
}'''
我已经找到解决方案了:
/**
* Show Only Grouped Products in Woocommerce
*/
add_action( 'woocommerce_product_query',
'prefix_custom_pre_get_posts_query' );
function prefix_custom_pre_get_posts_query( $q ) {
if( is_shop() || is_page('products-portfolio') ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_type',
'field' => 'name',
'terms' => array( 'grouped'), // set product categories here
);
$q->set( 'tax_query', $tax_query );
}
elseif( is_product_category() ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_type',
'field' => 'name',
'terms' => array( 'grouped'), // set product categories here
);
$q->set( 'tax_query', $tax_query );
}
elseif( is_product_tag() ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_type',
'field' => 'name',
'terms' => array( 'grouped'), // set product categories here
);
$q->set( 'tax_query', $tax_query );
}
else {
}
}