WordPress文章自动生成摘要的几种方式对比

2025.6.23 杂七杂八 1193
33BLOG智能摘要
WordPress 提供了多种自动生成摘要的方法,各有优缺点。默认 method 是使用“更多”标签,优点是直观,但需要手动设置。按字数截取使用 the_excerpt(),简单但会破坏语句完整性,并清除 HTML 格式。Advanced Excerpt 插件允许更智能截取,保留格式和语句完整性,但可能与最新版 WordPress 不兼容。AI 自动生成摘要效果不错,但涉及延迟、费用和访问问题。作者最终采用混合方案:优先使用手动摘要,其次“更多”标签,最后自动截取前 120 字。选择方案应取决于内容类型。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

WordPress自动生成摘要的5种姿势,我踩过的坑都在这了

WordPress文章自动生成摘要的几种方式对比

大家好,我是33blog的技术编辑。今天想和大家聊聊WordPress文章摘要这个”看似简单实则坑多”的功能。作为一个每天要和WordPress打交道的博主,我试过各种自动生成摘要的方案,有些效果惊艳,有些则让我想砸键盘…

1. 默认的”更多”标签截断法

这是WordPress自带的经典方法,在文章编辑器中插入<span id="more-2776"></span>标签。优点是简单直接,但缺点也很明显:

  • 需要手动操作,完全谈不上”自动”
  • 如果忘记添加,首页就会显示全文(别问我怎么知道的)

记得我刚建站时,有次更新了主题却忘记设置摘要,结果首页直接展示了3篇万字长文的完整内容,页面加载慢得像蜗牛…

2. 按字数截取(the_excerpt)

这是最常见的自动摘要方案,在主题的index.php中使用the_excerpt()代替the_content()

<?php 
// 默认会截取55个单词
the_excerpt(); 
?>

可以通过excerpt_length过滤器调整字数:

function custom_excerpt_length($length) {
    return 30; // 改为30个单词
}
add_filter('excerpt_length', 'custom_excerpt_length');

但这个方法有个致命伤:会粗暴地截断句子,经常出现半句话的情况。而且会过滤所有HTML标签,如果你的摘要需要保留格式就尴尬了。

3. 智能截取插件(Advanced Excerpt)

后来我发现了Advanced Excerpt这个神器插件,它解决了原生方法的几个痛点:

  • 可以保留HTML标签(比如加粗、链接)
  • 支持按字符数而非单词数截取
  • 能确保在完整的句子结束处截断

安装后只需要在主题中替换原来的the_excerpt()为:

<?php the_advanced_excerpt(); ?>

不过要注意,这个插件最后一次更新是2019年,在最新的WordPress 6.x上可能会出现兼容性问题(我就遇到过摘要不显示的情况)。

4. 使用AI摘要(OpenAI API)

作为一个技术宅,我还尝试过用OpenAI API自动生成摘要。方法是在functions.php中添加:

function generate_ai_excerpt($post_id) {
    $content = get_the_content(null, false, $post_id);
    // 调用OpenAI API生成摘要(伪代码)
    $response = openai_api_request("用30字总结: ".$content);
    update_post_meta($post_id, '_ai_excerpt', $response);
}

实际效果确实惊艳,生成的摘要流畅自然。但问题也很明显:

  • API调用有延迟(特别是文章多的时候)
  • 需要处理费用问题(GPT-4可不便宜)
  • 国内访问稳定性问题

5. 我的终极方案:混合模式

经过多次迭代,现在我采用的是混合方案

  1. 优先使用手动填写的摘要(如果有)
  2. 其次使用<!--more-->标签位置
  3. 最后才回退到自动截取前120个字符

对应的代码实现:

function smart_excerpt($length = 120) {
    global $post;
    
    if (has_excerpt()) {
        return get_the_excerpt();
    }
    
    if (strpos($post->post_content, '<!--more-->')) {
        return get_the_content('', true);
    }
    
    $text = strip_shortcodes($post->post_content);
    $text = wp_strip_all_tags($text);
    return mb_substr($text, 0, $length).'...';
}

写在最后

其实没有完美的自动摘要方案,关键是要根据你的内容类型选择合适的方法。技术类文章可能适合精确截取,而散文随笔或许需要AI润色。

如果你也在这个问题上踩过坑,欢迎在评论区分享你的解决方案~下次我会聊聊如何给摘要自动添加”阅读更多”的智能链接,感兴趣的话记得关注!

评论

  • 手动添加摘要真的太容易忘记了,我之前也因为首页加载太慢被读者吐槽过😅

  • Advanced Excerpt确实好用,不过在WP6上我已经改用Custom Post Excerpt插件了,推荐试试

  • AI摘要效果是不错,但那个API费用真的扛不住啊,小站长表示伤不起