WordPress自动为标签关键字添加页面内链(含大小写不敏感方案)

我们在编写文章时,经常需要添加一些标签关键词的链接,这样不仅可以优化我们的内链,对用户来说也可以参照相关的文章,如果对文章的关键字进行手动添加链接,那样对我们来说太麻烦了,而且在标签关键词很多的情况下我们是记不住的,那怎么如何让WordPress站点的文章自动添加标签链接变为内链呢?请读者继续往下看:

WordPress自动为标签关键字添加页面内链

具体代码(大小写敏感)

/**
 * 自动为文章内的标签添加内链(大小写敏感)
 */
//连接数量
 $match_num_from = 1;  //一个关键字少于多少不替换
 $match_num_to = 1; //一个关键字最多替换

 //按长度排序
 function tag_sort($a, $b){
     if ( $a->name == $b->name ) return 0;
     return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
 }
 
 //改变标签关键字
 function tag_link($content){
     global $match_num_from,$match_num_to;
     $posttags = get_the_tags();
     if ($posttags) {
         usort($posttags, "tag_sort");
         foreach($posttags as $tag) {
             $link = get_tag_link($tag->term_id);
             $keyword = $tag->name;
             //连接代码
             $cleankeyword = stripslashes($keyword);
             $url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),__('查看所有包含 %s 的帖子'))."\"";
             $url .= ' target="_blank"';
	     $url .= ' style="color: #FF0000"';
             $url .= ">".addcslashes($cleankeyword, '$')."</a>";
             $limit = rand($match_num_from,$match_num_to);
             //不连接的代码
             $content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content); 
             $content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
             $cleankeyword = preg_quote($cleankeyword,'\'');
             $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
             $content = preg_replace($regEx,$url,$content,$limit);
             $content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
         }
     }
    return $content;
 }
//连接到WordPress的模块
add_filter('the_content','tag_link',1);

具体代码(大小写不敏感)

/**
 * 自动为文章内的标签添加内链(大小写不敏感)
 */
//连接数量
 $match_num_from = 1;  //一个关键字少于多少不替换
 $match_num_to = 1; //一个关键字最多替换

 //按长度排序
 function tag_sort($a, $b){
     if ( $a->name == $b->name ) return 0;
     return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
 }
 
 //改变标签关键字
 function tag_link($content){
     global $match_num_from,$match_num_to;
     $posttags = get_the_tags();
     if ($posttags) {
         usort($posttags, "tag_sort");
         foreach($posttags as $tag) {
             $link = get_tag_link($tag->term_id);
             $keyword = $tag->name;
             //将大小写强行更改为标签的大小写
             $content = str_ireplace(urldecode($tag->slug), $tag->name, $content);
             //连接代码
             $cleankeyword = stripslashes($keyword);
             $url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),__('查看所有包含 %s 的帖子'))."\"";
             $url .= ' target="_blank"';
             $url .= ' style="color: #FF0000"';
             $url .= ">".addcslashes($cleankeyword, '$')."</a>";
             $limit = rand($match_num_from,$match_num_to);
             //不连接的代码
             $content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content); 
             $content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
             $cleankeyword = preg_quote($cleankeyword,'\'');
             $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
             $content = preg_replace($regEx,$url,$content,$limit);
             $content = str_replace( '%&&&&&%', stripslashes($ex_word),$content);

         }
     }
    return $content;
 }
//连接到WordPress的模块
add_filter('the_content','tag_link',1);

使用方法

将上述PHP代码放到当前主题 functions.php 文件中即可自动启用。

声明:本文为原创,作者为 Svlik,转载时请保留本声明及附带文章链接:http://www.svlik.com/1045.html