【问题标题】:Woocommerce page with different number of columns具有不同列数的 Woocommerce 页面
【发布时间】:2015-11-13 10:28:53
【问题描述】:

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

没有成功。

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

【问题讨论】:

  • 你用的是woothemes主题吗?

标签: php wordpress loops woocommerce


【解决方案1】:

如果您正在使用 woothemes 主题或任何其他已经使用 loop_columns 过滤器的主题,那么您需要通过删除 if !function 退出条件来覆盖它,并添加足够高的过滤器优先级,例如 999所以最后才应用:

例如

// 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/第二个标题

【讨论】:

  • 嗨@Mohsin,感谢您的回复。我刚刚编辑了我的代码:function loop_columns() { if (is_page(91040)){ return 4; }else{ return 3; } } add_filter('loop_shop_columns', 'loop_columns', 999);,但它不起作用。就像它无法识别页面 ID,事实上,如果我只尝试 return 5; 它就可以了。
  • 我明白了,你在循环之外调用它。你需要添加这个全局 $post;在您的 is_page 行之前
  • @ManuelRagazzini 如果我的回答有任何帮助,我们将不胜感激。谢谢!
【解决方案2】:

我解决了这个问题。问题出在 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);

【讨论】:

    【解决方案3】:

    我花了很多脑力试图控制自定义模板中的列数。我是 WooCommerce 和 Wordpress 的新手,所以在学习曲线上。但是,我开始了:

    <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 列,只是想不通。我尝试了谷歌可以抛出的所有东西,比如文件管理器等。然而,我终于发现,上面的 sn-p 是以

    开头的
    <ul class="products"> 
    

    标签。我所做的只是 dd 适当的列类:

    <ul class="products columns-5">
    

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

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2014-10-31
      • 1970-01-01
      • 2021-03-23
      • 2018-10-10
      • 2022-07-31
      相关资源
      最近更新 更多