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
相关产品推荐
相关产品推荐

