WordPress 自动为文章标签(关键词)添加该标签的链接

有一天我在给某篇文章评论的时候,偶尔看到了“斌果”朋友问的:有没有自动将文章中出现的标签放上链接?然后多次探索探究找到了自动将文章中出现的标签加链接的方法。这方法很简单,将下面的代码添加到主题的 functions.php 即可:

/**
 * WordPress 自动为文章标签添加该标签的链接
 * https://www.wpdaxue.com/auto-add-tag-link.html
 */
function wpkj_auto_add_tag_link($content){

    $limit = 1; // 设置同一个标签添加几次链接

    $posttags = get_the_tags();

    if ($posttags) {
        foreach($posttags as $tag) {
            $link = get_tag_link($tag->term_id);
            $keyword = $tag->name;

            $cleankeyword = stripslashes($keyword);
            $url = '<a target="_blank" href="'.$link.'" title="'.str_replace('%s', addcslashes($cleankeyword, '$'), __('View all posts in %s')).'">'.addcslashes($cleankeyword, '$').'</a>';
            $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s';
            $content = preg_replace($regEx,$url,$content,$limit);
        }
    }

    return $content;
}
add_filter( 'the_content', 'wpkj_auto_add_tag_link', 1 );

你可以根据自己的需要修改第7行的数值。

alimJan

muellim博客的创建人。

16 条评论

      1. 如果一篇文章有十几个标签,那么链接就显得太多了,一篇文章有两个内链就好了,如果要限制标签链接的数量要怎么修改这个代码

    1. 有个问题就是你没有仔细看下代码
      $match_num_from = 1; // 一个标签在文章中出现少于多少次不添加链接
      $match_num_to = 1; // 一篇文章中同一个标签添加几次链接

  1. $ex_word与$case两个参数没有看到设置,基本就是空,难道这也是全局变量么,$limit = rand($match_num_from,$match_num_to);只是随机数,$match_num_from 和 $match_num_to 设置的是范围,1到1之间当然返回1,也是说替换1次。addcslashes()这个函数,感觉用起来是多余的,调用数据库里的数据,给用户看的数据还要转义,呵呵

发表评论