You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Woocommerce 3.3.3中为指定商品分类修改每行列数

解决WooCommerce特定商品分类自定义每行商品列数的问题

Hey there! Let's sort out that column count issue you're facing with your WooCommerce 3.3.3 setup. Your original code had the right idea, but a couple of small tweaks will make it target only your newsletter-issues category instead of applying changes across the board.

修正后的可用代码

// 为特定商品分类自定义每行商品列数
add_filter('loop_shop_columns', 'custom_loop_columns_for_target_category', 99);

function custom_loop_columns_for_target_category($columns) {
    // 检测当前是否为目标商品分类页面
    if (is_product_category('newsletter-issues')) {
        return 1; // 目标分类每行展示1个商品
    }
    // 其他分类/页面保持原有默认列数
    return $columns;
}

关键调整说明

  • 钩子优先级设置:给add_filter加上99的优先级,确保这个回调函数在其他可能修改列数的代码之后执行,避免被其他规则覆盖。
  • 保留原有默认值:不再硬编码返回4列,而是返回传入的$columns参数,这样其他分类、商店首页会保持主题或WooCommerce默认的列数,更灵活适配你的现有设置。
  • 逻辑顺序优化:先注册钩子再定义函数,确保WordPress能正确识别并执行这个自定义规则。

扩展与使用提示

  • 把这段代码添加到当前主题的functions.php文件末尾,或者用自定义代码插件(比如Code Snippets)来添加,避免主题更新导致代码丢失。
  • 如果需要给多个分类设置不同列数,可以扩展条件判断:
    if (is_product_category(['newsletter-issues', 'limited-edition'])) {
        return 1; // 多个分类统一设置为1列
    } elseif (is_product_category('hot-sellers')) {
        return 2; // 另一分类设置为2列
    }
    

为什么之前的代码会影响所有分类?

你之前的代码里,add_filter放在了函数定义之外,且else分支硬返回4,这会强制覆盖主题或其他插件原本设置的列数,导致除目标分类外的所有页面都被改成4列。修正后的代码会尊重原有默认配置,只对目标分类做针对性修改。

内容的提问来源于stack exchange,提问作者CPdeva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:54:35