WordPress Jevelin主题搜索纯文本提取问题:wp_strip_all_tags返回数组式字符串
解决Jevelin主题搜索结果中提取页面纯文本内容的问题
这种情况太常见了——Jevelin主题自带的页面构建器(不管是集成的第三方工具还是它自定义的Builder)会把页面内容以结构化的短代码/标记格式存在文章的post_content里,你直接调用的$content其实是这些未解析的原始构建数据,而非最终渲染后的页面文本,所以用wp_strip_all_tags处理后才会出现那些类似数组的奇怪字符串。
下面是具体的解决步骤和代码示例:
1. 先获取解析后的完整内容
首先得让主题把那些结构化标记转换成正常的HTML内容,我们可以通过WordPress的the_content过滤器实现,它会自动触发Jevelin构建器的解析逻辑:
// 获取经过主题解析后的完整内容 $processed_content = apply_filters('the_content', get_the_content());
2. 提取纯文本并截取指定长度
拿到解析后的内容后,去除所有HTML标签和残留短代码,再截取到200字符左右的长度,同时避免生硬截断单词:
// 去除所有标签和短代码,得到纯文本 $plain_text = wp_strip_all_tags($processed_content, true); // 方式一:用wp_trim_words按单词数估算(25个单词大概对应200字符),省心又避免截断单词 $short_excerpt = wp_trim_words($plain_text, 25, '...'); // 方式二:精确控制字符数,同时处理单词截断问题 /* if (strlen($plain_text) > 200) { // 先截取前200字符,再找到最后一个空格的位置截断 $short_excerpt = substr($plain_text, 0, strrpos(substr($plain_text, 0, 200), ' ')) . '...'; } else { $short_excerpt = $plain_text; } */ // 输出最终的纯文本摘要 echo $short_excerpt;
备用方案:手动解析短代码
如果上面的方法没生效,可能是the_content过滤器没触发Jevelin构建器的解析,这时候可以尝试手动解析短代码:
// 获取原始的post内容 $raw_content = get_post_field('post_content', get_the_ID()); // 手动解析所有短代码 $parsed_content = do_shortcode($raw_content); // 后续步骤和上面一致 $plain_text = wp_strip_all_tags($parsed_content, true); $short_excerpt = wp_trim_words($plain_text, 25, '...'); echo $short_excerpt;
注意事项
- 确保这些代码在WordPress主循环(
while (have_posts()) : the_post();)内部调用,这样get_the_content()才能正确获取当前搜索结果项的内容。 - 如果搜索结果同时包含文章(post类型),可以用
if (is_page()) { ... }给页面类型单独应用这个逻辑。
内容的提问来源于stack exchange,提问作者user5582011
相关产品推荐
相关产品推荐

