
在 WordPress 归档页中,可通过 get_the_content() 获取原始内容后截取指定长度,替代直接调用 the_content(),从而安全、灵活地控制摘要字符数,无需依赖过滤钩子。
在 wordpress 归档页中,可通过 `get_the_content()` 获取原始内容后截取指定长度,替代直接调用 `the_content()`,从而安全、灵活地控制摘要字符数,无需依赖过滤钩子。
在 WordPress 主题开发中,常需在文章列表页(如首页、分类归档页)显示简洁的内容摘要,而非完整正文。虽然 the_content() 会自动应用格式化过滤器(如段落换行、短代码解析),但其输出不可直接截断——若强行用 substr() 处理 the_content() 的输出,极易破坏 HTML 结构(如截断标签、遗漏闭合符),导致页面渲染异常。
更可靠的做法是使用 get_the_content() ——它返回未经 wpautop 和 do_shortcode 等过滤器处理的原始内容字符串(即数据库中存储的纯文本或基础 HTML),便于安全截取:
<?php $content = get_the_content(); $limited_content = substr( $content, 0, 50 ); echo '<p>' . esc_html( $limited_content ) . '…</p>'; ?>
✅ 关键优势:
- 避免钩子依赖,轻量可控;
-
get_the_content()不触发the_content过滤器,避免意外格式干扰; - 配合
esc_html()可防止 XSS 风险(尤其当内容含用户输入时)。
⚠️ 注意事项:
-
substr()按字节截取,对多字节字符(如中文、Emoji)可能造成乱码。推荐改用wp_trim_words()(按词截取,自动处理 HTML 和编码):<?php echo '<p>' . wp_trim_words( get_the_content(), 20, '…' ) . '</p>'; ?>
- 若需保留简单 HTML 标签(如
<strong></strong>、<em></em>),可结合wp_strip_all_tags()清理后再截取,或使用wp_html_excerpt()(WordPress 5.5+):<?php echo '<p>' . wp_html_excerpt( get_the_content(), 100 ) . '…</p>'; ?>
总结:优先使用 wp_trim_words() 实现语义化截断;若需严格按字符数控制且内容为纯文本,再选用 substr() + get_the_content() 组合,并务必进行输出转义与编码安全处理。


















