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

如何移除指定WooCommerce产品分类页面侧边栏?现有代码无效

解决WooCommerce特定产品分类页面移除侧边栏问题(兼容WOOF插件)

原代码失效的核心原因是使用了body_class钩子——这个钩子触发时机太晚,无法在侧边栏渲染前完成移除操作。另外WOOF Products Filter插件可能会重新渲染侧边栏,需要调整钩子优先级和判断逻辑。

以下是修正后的可用代码:

add_action('template_redirect', 'my_remove_specific_category_sidebar');
function my_remove_specific_category_sidebar() {
    // 指定要移除侧边栏的产品分类slug数组
    $target_categories = array('roset', 'plank');
    
    // 覆盖商店页、目标分类页,以及WOOF过滤后的目标分类结果页
    if (is_shop() || is_product_category($target_categories) || (isset($_GET['woof']) && has_term($target_categories, 'product_category'))) {
        // 移除默认WooCommerce侧边栏
        remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar', 10);
        
        // 移除WOOF插件添加的侧边栏组件(若插件有自定义渲染逻辑)
        remove_action('woocommerce_sidebar', 'woof_show_widget', 10);
    }
}

关键细节说明:

  • 改用template_redirect钩子:该钩子触发时机足够早,能在侧边栏渲染前完成移除操作。
  • 兼容WOOF过滤场景:添加isset($_GET['woof']) && has_term(...)判断,确保用户用WOOF筛选目标分类产品时,侧边栏也会被移除。
  • 优先级调整:如果WOOF插件用了相同优先级添加侧边栏,可以把remove_action的优先级改为11(比如remove_action(..., 11)),确保覆盖插件的动作。
  • 分类slug验证:确认$target_categories数组里的是产品分类的slug(不是显示名称),避免判断逻辑失效。

将这段代码添加到主题的functions.php文件,或使用自定义代码插件(如Code Snippets)即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:35:24