WordPress自定义侧边栏小工具默认填充内容如何移除?
问题原因
WordPress 全新安装实例的所有未手动配置过小工具的侧边栏,都会自动填充搜索、最新文章、最新评论等默认核心小工具,属于原生默认逻辑,和你注册侧边栏的代码无关。
解决方案
方案1:主题激活时自动清空指定侧边栏的默认小工具
直接在主题的functions.php中添加以下代码,触发时机为主题刚激活时,会直接清除你自定义侧边栏的默认填充内容:
// 主题激活时清空自定义侧边栏的默认小工具 function clear_my_sidebar_default_widgets() { $sidebar_id = 'my-sidebar-widget'; // 对应你注册侧边栏时填写的id $sidebars_widgets = get_option('sidebars_widgets'); // 仅当侧边栏还未被用户手动配置过时执行清空 if (!isset($sidebars_widgets[$sidebar_id]) || empty($sidebars_widgets[$sidebar_id])) { $sidebars_widgets[$sidebar_id] = array(); update_option('sidebars_widgets', $sidebars_widgets); } } add_action('after_switch_theme', 'clear_my_sidebar_default_widgets');
这个方案是一次性操作,执行后用户后续可以正常在后台小工具页面给该侧边栏添加内容,不会被覆盖。
方案2:动态过滤侧边栏输出,强制设置默认内容
如果你需要在侧边栏未被用户手动配置时,强制输出空白或者你自定义的内容,可以使用sidebars_widgets过滤器,代码如下:
// 动态修改自定义侧边栏的小工具列表 function custom_my_sidebar_default_content($sidebars_widgets) { $sidebar_id = 'my-sidebar-widget'; // 仅在前端展示、且侧边栏无用户手动配置的小工具时生效 if (!is_admin() && isset($sidebars_widgets[$sidebar_id]) && empty($sidebars_widgets[$sidebar_id])) { // 这里返回空数组就是空白内容,如果要加自定义小工具可以往数组里加对应配置 $sidebars_widgets[$sidebar_id] = array(); } return $sidebars_widgets; } add_filter('sidebars_widgets', 'custom_my_sidebar_default_content');
这个方案是动态生效的,不会修改数据库里的小工具配置,用户只要在后台给该侧边栏添加任意小工具,就会优先展示用户配置的内容。
内容的提问来源于stack exchange,提问作者SBWT
相关产品推荐
相关产品推荐

