WordPress文章<code>标签含特殊字符导致发布异常求助
解决WordPress中
<code>标签含特殊字符导致页面显示“Nothing is Found Here”的问题 这问题我之前帮朋友排查过类似的,WordPress的内容过滤机制有时候对HTML实体+代码标签的组合会有奇怪的拦截,给你几个靠谱的解决办法:
1. 优先使用Gutenberg内置的代码块
别手动写<code>标签了,直接用WordPress编辑器(Gutenberg)自带的代码块:
- 编辑文章时,点击添加块按钮(+),搜索“代码”并选择
- 在代码块里直接输入
<form>,编辑器会自动处理特殊字符的转义与渲染 - 这种方式完全避开了手动标签的过滤冲突,还能让代码显示更美观(带语法高亮可选)
2. 用短代码替代手动转义的内容
如果一定要保留<code>标签的写法,可以通过自定义短代码来安全输出特殊字符:
- 打开主题的
functions.php文件(建议用子主题,避免主题更新丢失修改) - 添加以下代码:
function safe_display_form_tag() { // 用esc_html确保内容被安全转义 return esc_html('<form>'); } add_shortcode('safe_form_tag', 'safe_display_form_tag');
- 在文章内容里这样写:
blablabla <code>[safe_form_tag]</code> blablabla
发布后就能正确显示<form>,不会触发页面异常。
3. 调整内容过滤规则(谨慎使用)
如果上面两种方法都不符合你的需求,可以调整WordPress的HTML过滤规则,允许<code>标签内的特殊字符。但注意:这可能带来安全风险,仅在你信任所有发布内容的情况下使用:
在functions.php中添加:
function allow_special_chars_in_code($allowed_tags) { // 确保<code>标签被允许,并保留其属性 $allowed_tags['code'] = array( 'class' => array(), 'style' => array() ); return $allowed_tags; } add_filter('wp_kses_allowed_html', 'allow_special_chars_in_code', 10, 1);
为什么会出现这个问题?
WordPress的wp_kses函数会自动过滤文章中的HTML内容,防止恶意代码注入。当<code>标签里包含转义后的<form>实体(<form>)时,可能被误判为试图注入可执行的表单代码,从而触发内容拦截,导致页面因无有效内容显示而出现“Nothing is Found Here”。
内容的提问来源于stack exchange,提问作者nazreen
相关产品推荐
相关产品推荐

