WordPress 中控制 the_excerpt() 输出的字数
方法一:使用内置的 Excerpt Length 钩子(推荐)
这是最标准、最常用的方法。通过 WordPress 提供的 excerpt_length
过滤器,您可以轻松地修改摘录的字数。
将以下代码添加到您当前主题的 functions.php
文件中:
php
/** * 自定义摘要字数长度 * * @param int $length 默认的摘要字数(55个单词)。 * @return int 修改后的摘要字数。 */ function my_custom_excerpt_length( $length ) { // 将 20 修改为您希望显示的字数(英文是单词数,中文基本等价于字数) return 20; } // 将函数添加到 'excerpt_length' 过滤器 add_filter( 'excerpt_length', 'my_custom_excerpt_length' );
重要说明:
- 这里的数字
20
代表单词数。对于英文,它会截取 20 个单词。 - 对于中文,由于没有空格分隔单词,WordPress 会尝试将每个字符视为一个“单词”,所以在大多数情况下,
20
就代表 20 个字。这是最接近控制“字数”的方法。
优点:
- 一次性修改全站所有使用
the_excerpt()
的地方。 - 代码简洁,符合 WordPress 开发规范。
方法二:同时修改长度和省略号样式
您可能还想自定义末尾的省略符号。这时可以同时使用 excerpt_length
和 excerpt_more
两个过滤器。
将以下代码添加到 functions.php
:
php
// 1. 自定义摘要长度 function my_custom_excerpt_length( $length ) { return 20; // 设置为需要的字数 } add_filter( 'excerpt_length', 'my_custom_excerpt_length' ); // 2. 自定义摘要末尾的省略号样式 function my_custom_excerpt_more( $more ) { return '...'; // 将默认的 [...] 替换为 ... } add_filter( 'excerpt_more', 'my_custom_excerpt_more' );
方法三:直接使用 wp_trim_words() 函数(最灵活)
如果您只想在某个特定模板(如 home.php
, archive.php
)或某个地方控制输出,而不是全局修改,这个方法非常有用。你可以用它来创建一个自定义的摘录输出。
在您的模板文件(例如 .php
)中,替换掉 the_excerpt()
,使用以下代码:
php
<?php $excerpt = get_the_excerpt(); // 获取文章的摘录内容 echo wp_trim_words( $excerpt, 20, '...' ); // 输出限制在20个单词,并以...结尾 ?>
参数解释:
$excerpt
: 要处理的文本。20
: 要保留的字数(单词数)。'...'
: 超过字数后末尾添加的符号。
优点:
- 可以在不同页面模板使用不同的字数限制,灵活性极高。
- 不需要修改
functions.php
文件。
方法四:手动创建摘要(处理无手动摘要的文章)
如果文章没有设置“手动摘要”,WordPress 会自动从内容中截取。但自动截取的内容可能不完美。以下是一个更强大的自定义函数,可以添加到 functions.php
,它会优先使用手动摘要,如果没有则从内容中截取并清理格式。
php
/** * 获取自定义字数的摘要 * @param int $length 要返回的字数(单词数) * @param string $more 结尾符号 * @return string 处理后的摘要 */ function my_get_custom_excerpt( $length = 20, $more = '...' ) { // 如果文章设置了手动摘要,直接返回 if ( has_excerpt() ) { $excerpt = get_the_excerpt(); } else { // 如果没有手动摘要,从内容中获取 $excerpt = get_the_content(); // 清除 HTML 标签,避免截取到一半的标签 $excerpt = strip_tags( $excerpt ); // 使用 wp_trim_words 进行截取 $excerpt = wp_trim_words( $excerpt, $length, $more ); } return $excerpt; }
在模板中的使用方法:
php
<?php echo my_get_custom_excerpt( 25, ' »' ); // 输出25字,并以 » 结尾 ?>
总结与建议
方法 | 适用场景 | 优点 |
---|---|---|
方法一 | 全局修改所有摘录字数 | 简单、标准、一键配置 |
方法二 | 全局修改字数和省略号样式 | 在方法一基础上增加自定义样式 |
方法三 | 在特定模板文件中自定义 | 灵活,不影响网站其他部分 |
方法四 | 需要高度自定义摘录行为 | 功能最强大,可处理无手动摘要的情况 |
对于大多数用户,我们推荐使用【方法一】或【方法二】。
操作步骤:
- 登录您的 WordPress 后台。
- 转到 外观 > 主题文件编辑器。
- 在右侧选择
functions.php
文件。 - 将上面【方法一】或【方法二】的代码粘贴到文件末尾的
?>
标签之前(如果该标签存在的话)。如果文件末尾没有?>
,直接粘贴到最下面即可。 - 点击更新文件保存更改。
- 清除网站缓存(如果使用了缓存插件),然后刷新前台页面查看效果。
记得根据您的实际需求修改代码中的数字 20
。