WordPress RSS模板中移除PHP字符串HTML标签问题求助
解决自定义RSS模板中Description保留HTML标签的问题
你遇到的问题核心其实是**the_content()的使用方式不对**——这个函数是直接输出内容,而不是返回字符串,所以你之前的$content = the_content();其实没把内容存到变量里,后续的过滤自然就失效了,HTML标签还是直接输出了。
正确的处理步骤
- 用
get_the_content()替代the_content(),它会返回文章内容的字符串,而不是直接输出 - 结合WordPress自带的函数或原生PHP函数清理HTML标签和实体字符
替换后的代码示例
把你原来的Description部分替换成这段代码:
<description> <?php // 获取文章内容字符串 $content = get_the_content(); // 先解码HTML实体(比如 、–等),再移除所有HTML标签 $clean_content = wp_strip_all_tags(html_entity_decode($content), true); // 替换多余的空格(包括 转成的空格)为单个空格,再去除首尾空格 $clean_content = preg_replace('/\s+/', ' ', str_replace(' ', ' ', $clean_content)); echo trim($clean_content); ?> </description>
代码解释
get_the_content():正确获取文章内容的字符串,而不是直接输出html_entity_decode():把HTML实体(比如 、–)转换成普通字符wp_strip_all_tags():WordPress原生函数,比strip_tags()更彻底,能处理一些WordPress特定的内容标签- 最后的正则和替换:清理掉多余的连续空格,让内容更整洁
为什么之前的写法无效?
因为the_content()会直接把内容打印到输出流里,你的$content变量实际上是空的,所以wp_filter_nohtml_kses($content)和strip_tags(html_entity_decode($content))都是在处理空值,根本没作用到实际的文章内容上,所以HTML标签还是原样输出了。
内容的提问来源于stack exchange,提问作者Mike Hudson
相关产品推荐
相关产品推荐

