如何在WordPress 4.9.4的Twenty Seventeen子主题中移除WooCommerce所有侧边栏
如何移除WordPress Twenty Seventeen子主题中的WooCommerce侧边栏
嘿,我来帮你搞定这个问题!你之前用的remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);没生效,大概率是钩子优先级不对,或者没考虑到Twenty Seventeen主题本身的侧边栏注册逻辑,试试下面这些针对性的解决方案:
方法1:调整钩子优先级并移除主题+WooCommerce的侧边栏钩子
因为Twenty Seventeen主题和WooCommerce可能用了不同的钩子触发侧边栏,而且你的代码可能执行时机不对。把这段代码添加到子主题的functions.php文件里:
add_action('wp_head', 'remove_all_sidebars', 20); function remove_all_sidebars() { // 移除WooCommerce自带的侧边栏钩子 remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar', 10); // 移除Twenty Seventeen主题的侧边栏钩子 remove_action('twentyseventeen_sidebar', 'twentyseventeen_get_sidebar', 10); // 强制清空所有侧边栏的小工具,彻底禁用侧边栏显示 add_filter('sidebars_widgets', '__return_empty_array'); }
这里把执行优先级设为20(比默认的10高),确保能覆盖原有的钩子,同时用__return_empty_array直接清空所有侧边栏的小工具,从根源上禁用侧边栏。
方法2:通过WooCommerce模板重载修改
WooCommerce允许子主题重载模板文件,这样修改不会因为插件更新丢失:
- 在你的子主题目录下新建
woocommerce文件夹 - 复制
wp-content/plugins/woocommerce/templates/sidebar.php到这个新建的woocommerce文件夹里 - 打开复制过来的
sidebar.php,把里面的所有内容清空(保留文件结构避免报错) - 如果你想针对特定页面(比如商品详情页、商店首页)移除侧边栏,可以复制对应的模板文件(比如
single-product.php、shop.php)到子主题的woocommerce文件夹,然后找到里面调用do_action('woocommerce_sidebar')或者get_sidebar()的代码,注释掉或者删掉。
方法3:CSS强制隐藏(应急方案)
如果上面的方法都没效果,用CSS直接隐藏侧边栏也是个快速解决方案,把这段代码添加到子主题的自定义CSS或者style.css里:
/* 隐藏所有侧边栏元素 */ #secondary, .widget-area, .sidebar { display: none !important; visibility: hidden !important; } /* 让主内容区占满整个页面宽度 */ #primary, .site-content { width: 100% !important; max-width: 100% !important; margin: 0 !important; }
注意:所有修改都要在子主题里操作,不要修改父主题或者WooCommerce插件的核心文件,避免更新后丢失修改内容。
内容的提问来源于stack exchange,提问作者user3603151




