在 WordPress 中,文字摘要(Excerpt)是显示文章内容的简短描述,通常用于文章列表页面、博客首页或搜索结果中。默认情况下,WordPress 自动生成的摘要长度为 55 个单词,但如果需要更精确地控制摘要长度,尤其是手动摘要或自动摘要的长度,可以通过代码实现。
文章目录
excerpt_length
钩子,可以轻松修改自动生成摘要的长度。以下是实现代码:代码示例:add_filter('excerpt_length', function($length) {
return 30; // 设置自动摘要的长度为 30 个单词
});
添加位置:functions.php
文件中。保存后,WordPress 自动生成的摘要长度将修改为 30 个单词。pre_post_excerpt
钩子。代码示例:add_filter('pre_post_excerpt', function($excerpt) {
$max_length = 100; // 设置手动摘要的最大长度为 100 个字符
if (strlen($excerpt) > $max_length) {
$excerpt = mb_substr($excerpt, 0, $max_length) . '...'; // 超过限制则裁剪并添加省略号
}
return $excerpt;
});
功能说明:strlen($excerpt)
获取当前摘要的字符长度。mb_substr($excerpt, 0, $max_length)
裁剪字符串。...
)提示内容被截断。如果希望用户在后台输入摘要时直接限制输入长度,可以通过 JavaScript 实现实时限制。
代码示例:function limit_excerpt_length_admin_script() {
echo "
<script>
document.addEventListener('DOMContentLoaded', function() {
const excerptField = document.querySelector('#excerpt');
const maxLength = 100; // 设置最大输入长度
if (excerptField) {
excerptField.addEventListener('input', function() {
const currentLength = excerptField.value.length;
if (currentLength > maxLength) {
excerptField.value = excerptField.value.substring(0, maxLength);
alert('摘要长度不能超过 ' + maxLength + ' 个字符!');
}
});
}
});
</script>
";
}
add_action('admin_footer', 'limit_excerpt_length_admin_script');
功能说明:excerpt_more
钩子实现。代码示例:add_filter('excerpt_more', function($more) {
return '... 阅读更多'; // 修改摘要末尾的显示内容
});
功能说明:excerpt_length
钩子,可以更好地控制摘要的展示效果。以下代码综合控制自动摘要长度、手动摘要裁剪以及后台输入限制:
// 修改自动摘要长度
add_filter('excerpt_length', function($length) {
return 30; // 自动摘要长度为 30 个单词
});
// 修改自动摘要后缀
add_filter('excerpt_more', function($more) {
return '... 阅读更多'; // 设置后缀
});
// 裁剪手动摘要长度
add_filter('pre_post_excerpt', function($excerpt) {
$max_length = 100; // 手动摘要最大长度为 100 个字符
if (strlen($excerpt) > $max_length) {
$excerpt = mb_substr($excerpt, 0, $max_length) . '...';
}
return $excerpt;
});
// 后台限制手动摘要输入长度
function limit_excerpt_length_admin_script() {
echo "
<script>
document.addEventListener('DOMContentLoaded', function() {
const excerptField = document.querySelector('#excerpt');
const maxLength = 100; // 最大长度
if (excerptField) {
excerptField.addEventListener('input', function() {
if (excerptField.value.length > maxLength) {
excerptField.value = excerptField.value.substring(0, maxLength);
alert('摘要长度不能超过 ' + maxLength + ' 个字符!');
}
});
}
});
</script>
";
}
add_action('admin_footer', 'limit_excerpt_length_admin_script');
通过 WordPress 钩子和自定义代码,可以灵活控制文字摘要的长度,包括自动摘要和手动摘要。根据不同需求,您可以裁剪手动摘要、修改自动摘要长度以及限制后台输入。