wordpress如何为文章自动添加标签并且附带内链

实现文章自动加标签 + 自动加标签内链,有两种主流方案:插件方案(推荐,简单稳定)纯代码方案(适合自定义需求)。下面分别详细说明。


一、插件方案(最省心,推荐)

1. 自动生成标签 + 自动加标签内链(一体化插件)

推荐插件:文章自动标签(Auto Tag for Posts)

  • 核心功能:
    • 自动从文章标题 / 内容提取关键词生成标签(支持 PHP、SCWS、结巴中文分词)
    • 自动将文章内的标签关键词转为指向标签页的内链
    • 可设置:标签最少字数、每篇最大标签数、仅中文 / 英文、链接替换次数
  • 安装与设置:
    1. 后台 → 插件 → 安装插件 → 搜索 “文章自动标签” → 安装并启用
    2. 进入设置:设置 → 文章自动标签
    3. 配置项:
      • 分词模式:中文站选结巴分词(效果最好)
      • 提取字段:标题 + 内容
      • 标签最小长度:2
      • 每篇最大标签数:5–8
      • 自动内链:开启,每个标签替换1 次(避免过度链接)
    4. 保存设置,发布 / 更新文章即可自动生效

2. 自动标签 + 自动内链(组合插件)

如果需要更灵活的内链控制,可分开用两个插件:

  • 自动标签插件
    • Automatic Post Tagger:按关键词库自动匹配加标签
    • WP Auto Keywords:基于 TF-IDF 算法提取关键词
  • 自动内链插件
    • Auto Links by Tag:专门将标签转为内链
    • Internal Link Juicer:高性能自动内链,支持标签 / 分类 / 自定义链接
    • Link Whisper:AI 智能内链建议(付费,功能强大)

二、纯代码方案(无插件,自定义强)

将以下代码添加到当前主题的 functions.php 文件末尾(建议用子主题,避免更新覆盖)。

1. 自动为文章添加标签(发布 / 更新时触发)

// 自动为文章添加标签
add_action('save_post', 'auto_add_tags_to_post');
function auto_add_tags_to_post($post_id) {
    // 排除自动保存、修订版本
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) return;
    
    $post = get_post($post_id);
    $content = $post->post_content . ' ' . $post->post_title;
    $existing_tags = get_tags(array('hide_empty' => false));
    
    if (empty($existing_tags)) return;
    
    $matched_tags = array();
    foreach ($existing_tags as $tag) {
        if (stripos($content, $tag->name) !== false) {
            $matched_tags[] = $tag->name;
        }
    }
    
    // 批量添加标签(不覆盖原有标签)
    if (!empty($matched_tags)) {
        wp_set_post_tags($post_id, $matched_tags, true);
    }
}
  • 逻辑:发布 / 更新文章时,扫描标题 + 内容,匹配已有标签并自动添加

2. 自动为文章内的标签添加内链(前端输出时处理)

// 自动为文章内的标签添加内链
add_filter('the_content', 'auto_link_tags_in_content');
function auto_link_tags_in_content($content) {
    global $post;
    $post_tags = get_the_tags($post->ID);
    
    if (empty($post_tags)) return $content;
    
    $limit = 1; // 每个标签只替换1次,避免过度内链
    foreach ($post_tags as $tag) {
        $tag_name = preg_quote($tag->name, '/');
        $tag_url = get_tag_link($tag->term_id);
        
        // 正则:只替换非链接、非图片中的关键词
        $pattern = '/(?!<a[^>]*>)(?!<img[^>]*>)(' . $tag_name . ')(?![^<]*<\/a>)(?![^<]*>)/i';
        $replacement = '<a href="' . esc_url($tag_url) . '" title="' . esc_attr($tag->name) . '">$1</a>';
        
        $content = preg_replace($pattern, $replacement, $content, $limit);
    }
    
    return $content;
}
  • 逻辑:前端输出文章时,自动将标签关键词转为标签页链接

三、两种方案对比

方案优点缺点适用场景
插件方案操作简单、可视化设置、功能丰富、支持中文分词、自动处理新旧文章占用少量资源、部分高级功能付费大多数站长、中文站、追求效率
纯代码方案无插件、零开销、完全自定义、无兼容性问题需懂代码、修改麻烦、无可视化界面、需手动维护技术型站长、极简需求、不想装插件

四、使用建议(SEO 友好)

  1. 标签数量控制:每篇文章标签建议 3–8 个,避免过多导致权重分散
  2. 内链频率:每个标签在文章内只加 1 次 链接,防止过度优化
  3. 标签规范:标签名称简洁、统一,避免重复或无意义标签
  4. 批量处理:插件一般支持批量为旧文章生成标签 / 内链,代码方案需手动更新旧文章

五、常见问题

  • 标签重复:插件 / 代码会自动去重,无需担心
  • 内链不生效:检查是否开启缓存(如 WP Rocket、Cloudflare),清除缓存后重试
  • 中文分词效果差:插件优先选结巴分词,代码方案可结合第三方分词 API 优化
© 版权声明
THE END
喜欢就支持一下吧
点赞457 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容