我正在使用 Woocommerce 3.3.3 并尝试更改特定产品类别而不是其他产品类别的列数。 我尝试了几个代码选项,但它们都将列中的更改应用于所有类别。 这是我尝试过的一件事。
/* change columns to 1 for newsletter issues prod cat*/
add_filter('loop_shop_columns', 'loop_columns');
if (!function_exists('loop_columns')) {
function loop_columns() {
if ( is_product_category('newsletter-issues')) {
return 1;
} else { // for other archive pages and shop page
return 4;
}
}
}
使用以下功能,您可以设置产品列表列和每个类别页面的产品数量。
/* Set product columns for specific category */
add_filter('loop_shop_columns', 'loop_columns');
if (!function_exists('loop_columns')) {
function loop_columns() {
if ( is_product_category('a')) {
return 3;
} else if ( is_product_category('c')) {
return 2;
}else{
return 4;
}
}
}
/* Set product per page for specific category */
add_action( 'woocommerce_product_query', 'cdx_woocommerce_products_per_page', 1, 50 );
function cdx_woocommerce_products_per_page( $query ) {
if( $query->is_main_query() && isset($query->query['product_cat'])){
switch($query->query['product_cat']){
case 'a':
$query->set( 'posts_per_page', '3' );
break;
case 'c':
$query->set( 'posts_per_page', '2' );
break;
default:
$query->set( 'posts_per_page', '4' );
}
}
}
根据@Codextent代码,在特定类别的产品列中它不起作用,我认为这是由woocommerce新版本引起的。目前我使用的是 woocoomerce 5.0 版本。
另一个每页显示产品正在工作
看来,
if ( is_product_category('a')) {
return 3;
} else if ( is_product_category('c')) {
return 2;
}else{
return 4;
}
为了工作,将上面的代码更改为这样
if ( has_term( 'a', 'product_cat' ) ) {
return 4; // 4 products per row
}else{
return 2;
}
快乐编码:)
这可以覆盖特定类别的产品数量,只需替换函数中的类别和编号即可。
/* 设置特定类别的每页产品 */
add_filter( 'loop_shop_per_page', 'products_per_page_category');
if (!function_exists('products_per_page_category')) {
function products_per_page_category( $count ) {
if( is_product_category( 'CATEGORY' ) ) {
return NUMBER;
}else{
return $count;
}
}
}