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。