Woocommerce页面具有不同数量的列

时间:2015-11-13 10:28:54

标签: php wordpress loops woocommerce

我的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; 
    }
}
}

没有成功。

有没有办法让单个或特定页面中的列数与其他页面相比不同?

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">

这可能需要对响应方面进行其他思考,但它跨越了使用该代码段控制列的直接障碍。但是,它实际上似乎反应很好。