我的Woocommerce网站在每个循环页面中显示3列产品。
我正在制作一些自定义目标网页,我想在4列而不是3列显示产品循环。
我在function.php中尝试了这段代码:
add_filter('loop_shop_columns', 'loop_columns');
if (!function_exists('loop_columns')); {
function loop_columns() {
if (is_page(91040)){
return 4;
}else{
return 3;
}
}
}
没有成功。
有没有办法让单个或特定页面中的列数与其他页面相比不同?
答案 0 :(得分:0)
如果您正在使用woothemes主题或任何其他已经使用loop_columns过滤器的主题,那么您需要通过删除if!函数退出条件来覆盖它,并且还需要添加pririty以过滤足够高的999所以它应用于最后:
e.g。
// Override theme default specification for product # per row
function loop_columns() {
return 5; // 5 products per row
}
add_filter('loop_shop_columns', 'loop_columns', 999);
您可以根据需要调整功能,例如在原始代码中添加有条件的页面模板。
来源: https://docs.woothemes.com/document/change-number-of-products-per-row/第二个标题
答案 1 :(得分:0)
我解决了这个问题。问题出在is_page函数中。它无法获取正确的ID,因此我找到了一个解决方法:
function loop_columns() {
global $woocommerce;
$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$ID = url_to_postid($url[0]);
if ($ID == 91040){
return 4;
}else{
return 3;
}
}
add_filter('loop_shop_columns', 'loop_columns', 999);
答案 2 :(得分:0)
我花了很多脑筋来控制自定义模板中的列数。我是WooCommerce和Wordpress的新手,因此在learninggin曲线上。但是,我从开始:
<ul class="products">
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->
当用作模板时,它给了我一个我可以弄弄的自定义循环。但是,从那里我想要5列,只是无法弄清楚。我尝试了Google可能抛出的所有东西,例如文件管理器等。但是,我终于发现上面的代码段以
开始<ul class="products">
标签。我所做的只是在适当的班级上dd:
<ul class="products columns-5">
这可能需要对响应方面进行其他思考,但它跨越了使用该代码段控制列的直接障碍。但是,它实际上似乎反应很好。