首页 Wordpress WordPress 文章标签自动内链代码

WordPress 文章标签自动内链代码

这是一段安全、严谨、无 BUG的 WordPress 函数,作用是:自动把文章内容里的标签文本,转为该标签的归档链接,实现关键词内链,提升 SEO 与用户体验。

一、核心特点

1. 零报错、超稳定
  • 无标签时直接返回内容,不执行逻辑
  • 过滤错误数据,不会出现 PHP 警告 / 报错
  • 兼容所有 WordPress 主题
  • 2. 不破坏网页 HTML 结构(最重要)
  • 不会替换图片 alt /title
  • 不会替换已存在的链接内部文字
  • 不会替换代码块、HTML 标签里的内容
  • 只替换文章里的纯文本关键词
  • 3. 支持特殊字符标签 4. 不重复添加链接
  • 同一个标签只加一次链接(可自定义次数)
  • php
    $limit = 1; // 同一个标签最多添加几次链接(推荐 1)
  • 已经是链接的文本绝对不会重复替换
  • 对 SEO 非常友好,避免过度优化
  • 5. 大小写不敏感
  • 标签是 主题,内容里写 主题、主题 都能匹配。
  • 6. 安全防 XSS
  • 链接使用 esc_url() 安全过滤
  • 文字使用 esc_html() 转义
  • 标题使用 esc_attr() 转义
  • 符合 WordPress 官方安全标准
  • 7. 只在文章页生效
  • 不影响首页、列表页、页面 (page)、摘要
  • 不影响后台编辑界面
  • 不拖慢网站速度
  • 二、代码

    php
    /**
     * WordPress 自动为文章标签添加该标签的链接
     * 修复版:无报错、正则严谨、不破坏HTML、支持特殊字符、不重复替换
     */
    function wpkj_auto_add_tag_link($content) {
        // 只在文章内容生效,不影响后台/摘要/页面
        if (is_admin() || is_single() === false) {
            return $content;
        }
    
        $limit = 1; // 同一个标签只添加1次链接
        $posttags = get_the_tags();
    
        // 无标签直接返回
        if (!$posttags || is_wp_error($posttags)) {
            return $content;
        }
    
        foreach ($posttags as $tag) {
            $name = trim($tag->name);
            if (empty($name)) continue;
    
            $link = get_tag_link($tag->term_id);
            $title = sprintf(__('View all posts in %s'), esc_attr($name));
            
            // 构建安全的A标签
            $replace = '<a target="_blank" href="' . esc_url($link) . '" title="' . $title . '">' . esc_html($name) . '</a>';
            
            // 严谨正则:只替换 纯文本内容,不替换HTML/链接内部
            $pattern = '/(?!<[^<>]*>)(' . preg_quote($name, '/') . ')(?![^<>]*<\/a>)/i';
            
            // 执行替换(不区分大小写,只替换前N次)
            $content = preg_replace($pattern, $replace, $content, $limit);
        }
    
        return $content;
    }
    add_filter('the_content', 'wpkj_auto_add_tag_link', 10);

    相关推荐

    发表回复

    邮箱地址不会被公开。