博客 / WordPress/ WordPress截取文章内容做为文章摘要

WordPress截取文章内容做为文章摘要

WordPress截取文章内容做为文章摘要

文章摘要是一个比较重要的信息。在我们日常发布文章时,如果每一篇文章都手动填写摘要,那无疑会耽误很多时间,所以WordPress默认的文章摘要功能有时难以满足我们的需求。

本文介绍了一种自动截取文章部分内容作为文章摘要的方法,并且能够自定义显示截取字数,以解决手动填写摘要的繁琐问题。

核心代码

以下PHP代码片段可以根据文章是否有手动填写的摘要,来决定是显示摘要还是自动从正文截取内容。

<?php
if (has_excerpt()) {
    // 如果文章有手动填写的摘要,则直接输出
    echo get_the_excerpt();
} else {
    // 如果文章没有摘要,则从正文中自动截取
    $raw_content = apply_filters('the_content', $post->post_content); // 获取并应用内容过滤器
    $stripped_content = strip_tags($raw_content); // 去除HTML标签
    $excerpt = mb_strimwidth($stripped_content, 0, 170, "……"); // 截取170个字符(以中文字符计)
    echo $excerpt;
}
?>

代码说明

  • has_excerpt(): 检查当前文章是否有手动填写的摘要。
  • get_the_excerpt(): 获取文章的手动摘要。
  • apply_filters('the_content', $post->post_content): 获取文章原始内容并应用所有与“the_content”关联的过滤器,确保处理的是与前端显示一致的内容。
  • strip_tags(): 去除内容中的所有HTML标签,避免摘要中出现代码。
  • mb_strimwidth($string, $start, $width, $trimmarker): 一个多字节安全的字符串截取函数。参数说明:
    • $string: 要截取的字符串。
    • $start: 开始位置,通常为0。
    • $width: 截取的最大宽度(字符数)。示例中为170,可根据需要调整。
    • $trimmarker: 截断后添加的字符串,示例中为中文省略号“……”。

重要提示:使用mb_strimwidth函数需要确保服务器的PHP环境已启用mbstring扩展,以正确处理中文字符(避免乱码或截取不准)。

使用方法

将上述代码复制到你正在使用的WordPress主题的functions.php文件中。通常,你需要在主题的循环(Loop)模板文件(如index.phparchive.phpcontent.php)中调用此摘要输出逻辑,而不是直接放在functions.php中输出。

一个更标准的做法是将代码封装成一个函数,然后在模板中调用:

// 在 functions.php 中定义函数
function my_custom_excerpt($length = 170) {
    if (has_excerpt()) {
        return get_the_excerpt();
    } else {
        $content = apply_filters('the_content', get_the_content());
        $stripped = strip_tags($content);
        return mb_strimwidth($stripped, 0, $length, '……');
    }
}

// 在模板文件(如 content.php)中调用
<div class="entry-summary">
    <?php echo my_custom_excerpt(200); // 此处可传递自定义字数 ?>
</div>

这种方式更加灵活和符合WordPress开发规范。

发表评论

您的邮箱不会公开。必填项已用 * 标注。