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

WooCommerce产品分类页不显示侧边栏 代码实现与模板排查

问题根因

产品分类页侧边栏不加载的核心原因是主题内sidebar.php的显示条件未覆盖WooCommerce产品分类归档场景。
现有判断逻辑仅对三类页面输出侧边栏:

  • 未加载Codestar框架且shop_sidebar侧边栏已添加组件
  • 商店主页面(is_shop()判定为真)且后台开启电商侧边栏开关
  • 单个产品详情页(is_product()判定为真)且后台开启详情页侧边栏开关

产品分类页属于WooCommerce自定义分类归档页,既不满足is_shop()判定,也不满足is_product()判定,因此即使archive-product.php中已经正确挂载woocommerce_sidebar钩子,也会因条件不成立无法输出侧边栏结构。

解决方案

无需修改archive-product.php模板,两种方案可选,优先选第一种:

方案1:调整sidebar.php判断逻辑(推荐)

直接修改sidebar.php的条件判断,补充WooCommerce分类归档页的判定规则,修改后完整代码如下:

<?php
if ( 
    (! function_exists( 'cs_framework_init' ) && is_active_sidebar('shop_sidebar')) 
    || ( (is_shop() || is_product_taxonomy()) && cs_get_option('enable_sidebar_ecommerce')) 
    || (is_product() && cs_get_option('enable_sidebar_ecommerce_detail')) 
) { ?>
<div class="col-md-3">
    <?php if ( ! function_exists( 'dynamic_sidebar' ) || ! dynamic_sidebar( 'shop_sidebar' ) ); ?>
</div>
<?php }
?>

说明:is_product_taxonomy()是WooCommerce原生判定函数,会自动覆盖所有产品相关归档页,包括product-category分类页、产品标签页、产品属性归档页,无需为每个分类单独写判定规则。

方案2:通过functions.php注入逻辑(不想改模板时使用)

如果不想直接修改模板文件,可以在子主题的functions.php中添加如下代码,让产品分类页复用商店主页面的侧边栏开关配置:

add_filter('cs_get_option', function($value, $key) {
    if ($key === 'enable_sidebar_ecommerce' && is_product_taxonomy()) {
        return true;
    }
    return $value;
}, 10, 2);

注意:使用该方案前请确认主题Codestar配置中电商侧边栏的开关键名确实为enable_sidebar_ecommerce,和现有siderbar.php中调用的键名保持一致即可生效。

校验

修改完成后清空站点静态缓存、浏览器缓存,刷新产品分类页即可看到侧边栏正常加载,原有商店主页、产品详情页的侧边栏显示逻辑不会受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:57:12