You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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允许子主题重载模板文件,这样修改不会因为插件更新丢失:

  1. 在你的子主题目录下新建woocommerce文件夹
  2. 复制wp-content/plugins/woocommerce/templates/sidebar.php到这个新建的woocommerce文件夹里
  3. 打开复制过来的sidebar.php,把里面的所有内容清空(保留文件结构避免报错)
  4. 如果你想针对特定页面(比如商品详情页、商店首页)移除侧边栏,可以复制对应的模板文件(比如single-product.phpshop.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

火山引擎 最新活动