WordPress如何移除导航菜单及header中自动生成的 字符
WordPress头部/导航自动生成 及空白节点解决方法
你之前添加的移除wpautop的代码仅作用于文章正文和摘要的格式化逻辑,头部模板、导航菜单的输出并不走对应钩子,因此无法生效,可通过以下方案解决:
方案1:直接清理模板文件空白
WordPress模板解析时会将PHP标签外的多余换行、缩进转换为空白节点,你可以直接编辑上传的header.php文件:
- 删除
<?php ?>标签之外不必要的换行、缩进空格,重点排查导航菜单代码块前后的空白内容 - 合并相邻的PHP代码块,减少不必要的PHP标签开闭操作
方案2:添加导航菜单专用过滤代码
如果多余空格仅出现在导航菜单区域,将以下代码添加到当前主题的functions.php文件中即可:
// 移除导航菜单的自动格式化规则 remove_filter( 'wp_nav_menu', 'wpautop' ); // 清理导航菜单项目的多余空白 add_filter( 'wp_nav_menu_items', 'trim_custom_nav_items', 10, 2 ); function trim_custom_nav_items( $items, $args ) { return trim( preg_replace('/\s+/', ' ', $items) ); } // 清除导航内所有 字符 add_filter( 'wp_nav_menu', 'remove_nbsp_from_nav', 99 ); function remove_nbsp_from_nav( $nav ) { return str_replace( ' ', '', $nav ); }
方案3:全局过滤头部输出空白
如果整个头部区域都存在该问题,添加以下代码到functions.php文件:
// 拦截头部输出并清理多余空白 add_action( 'get_header', function() { ob_start( function( $output ) { $output = preg_replace('/\s+/', ' ', $output ); $output = str_replace( ' ', '', $output ); return $output; }); }); add_action( 'wp_head', function() { ob_end_flush(); }, 999 );
修改完成后清空WordPress站点缓存、浏览器缓存,再检查前端源码即可验证是否生效。
内容的提问来源于stack exchange,提问作者Lyella
相关产品推荐
相关产品推荐

