【问题标题】:Woocommerce - Different product row setting for product-archive.php and taxonomy-product_cat.phpWoocommerce - product-archive.php 和 taxonomy-product_cat.php 的不同产品行设置
【发布时间】:2023-04-03 20:59:02
【问题描述】:

我正在尝试做的事情

我的目标是在 archive-product.php 上每行显示的产品数量与 taxonomy-product_cat.php 不同。

到目前为止我做了什么

我按原样使用archive-product.php,在我需要的地方挂接并显示类别拇指,使用下面的过滤器每行5个。

function jm_loop_columns() {
    return 5; // 5 products per row
}
add_filter( 'storefront_loop_columns', 'jm_loop_columns', 999 ); 

我已将 taxonomy-product_cat.php 复制到我的子主题中,因为此页面涉及更多样式和布局,这里我想每行仅显示 3 个产品。

选项

我可以使用 nth-child 选择器来实现相同的效果,但我宁愿避免仅使用 CSS 来实现。

根据页面模板应用具有不同设置的上述过滤器的最佳方法是什么?在 archive-product.php 中返回 5,在 taxonomy-product_cat.php 中返回 3

我正在考虑的许多想法之一是使用 is_page 或 is_page_template 编写一个条件函数来为每个模板加载不同的过滤器设置。

有人推荐这个方向吗?

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    使用conditional tags 怎么样?如果您在 product_cat 分类页面上,则将列数设置为 3。否则,让它保持在 5。

    function jm_loop_columns( $columns ) {
        if ( is_tax( 'product_cat' ) ){
            $columns = 3;
        } else {
            $columns = 5;
        }
        return $columns;
    }
    add_filter( 'storefront_loop_columns', 'jm_loop_columns', 999 ); 
    

    这将使您在适当的位置获得第一个和最后一个类,但您可能仍需要一些 CSS 来更改宽度。

    【讨论】:

    • 感谢@helgatheviking,我已经测试了我之前提出的建议,这是一个完美的改进。的确,无论如何我都必须使用 CSS,但仍然很高兴使用提供的过滤器完成该部分。检查答案正确
    • 似乎 is_taxonomy() 现在已被弃用,而 taxonomy_exists() 是必需的。
    • 啊...这是一个旧答案。它旨在检查您是否在分类档案中,但现在正确的功能是is_tax()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多