WordPress纯代码添加自动锚文本tag内链优化版

WordPress纯代码实现自动锚文本优化版,优化了在文章里面如果没有添加锚文本不自动连接的bug。

意思就是你的文章里面只要出现了tag里有的关键词,都会自动锚文本。

未修改之前,锚文本只能是“wordpress”,WordPress纯代码添加自动锚文本tag内链优化版 技术教程 第1张

优化后,tag里有的关键词,都自动锚文本。

WordPress纯代码添加自动锚文本tag内链优化版 技术教程 第2张

代码修改方法出自一位不愿意透露姓名的大神。

使用方法:

将下面的代码加入到主题的 functions.php 里即可。

/* 自动为文章内的标签添加内链开始 */
$match_num_from = 1;  //每篇文章中的关键词数量低于多少则不描文本(请不要低于1)
$match_num_to = 1; //同一篇文章中,同一个关键词最多描几次文本(这里是1次,建议不超过2次)
add_filter('the_content','tag_link',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_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, '$'),__('View all posts in %s')).""";
             $url .= ' target="_blank" class="tag_link"';
             $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;
}
/*自动为文章内的标签添加内链结束 */

当然,如果嫌弃每个文章的tag连接的太多的话,可以试试显示每个文章最多的tag显示数:

if($num_id >= 4),代表每个文章最多显示4个tag,完美。建议不要太多tag,4个差不多了。

代码由 卡盟吧 修改优化哦。

/* 自动为文章内的标签添加内链开始 */
$match_num_from = 1;  //每篇文章中的关键词数量低于多少则不描文本(请不要低于1)
$match_num_to = 1; //同一篇文章中,同一个关键词最多描几次文本(这里是1次,建议不超过2次)
$num_id = 0; //请不要修改这个参数
add_filter('the_content','tag_link',1);
function tag_sort($a, $b){
    if ( $a->name == $b->name ) {
	$num_id--;
	return 0;
    }
    return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}
function tag_link($content){
global $match_num_from,$match_num_to;
     $posttags = get_tags();
     if ($posttags) {
         usort($posttags, "tag_sort");
         foreach($posttags as $tag) {
	     if($num_id >= 4){
	         break;
	     }else{
		$num_id++;
	     }
             $link = get_tag_link($tag->term_id);
             $keyword = $tag->name;
             $cleankeyword = stripslashes($keyword);
             $url = "<a href="$link" title="".str_replace('%s',addcslashes($cleankeyword, '$'),__('View all posts in %s')).""";
             $url .= ' target="_blank" class="tag_link"';
             $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;
}
/*自动为文章内的标签添加内链结束 */

未优化版,也就是文章有tag才会锚文本:

//自动连接关键字
$match_num_from = 1;  //一篇文章中同一个关键字少于多少不秒文本(这个直接填1就好了) 
$match_num_to = 1; //一篇文章中同一个关键字最多出现多少次描文本(建议不超过2次) 
//连接到WordPress的模块 
add_filter('the_content','tag_link',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, '$'),__('View all posts in %s'))."""; 
              $url .= ' target="_blank"'; 
             $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; 
} 
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
赞(0)
如有侵权请联系我,未经允许不得转载:降温资源网 » WordPress纯代码添加自动锚文本tag内链优化版
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址