WordPress自动设置标签Tag自动内链无插件实现方法

 

之前一直有使用WP keyword Link Plugin插件,但是发现这个插件已经好久没有更新,好像目前在平台中已经找不到。所以准备替换掉这个插件。类似的WordPress插件还是有很多的,比如Keywords to Links Converter、Auto Tag Links等都可以实现。

本着少用插件,能不用插件就不用的策略,所以准备还是无插件实现。

//自动TAG转内链
$match_num_from = 2; // 一个TAG标签出现几次才加链接
$match_num_to = 1; // 同一个标签加几次链接
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 = ".str_replace('%s',addcslashes($cleankeyword, '$'),__('View all posts in %s'))."\"";
        $url .= ' target="_blank"';
        $url .= ">".addcslashes($cleankeyword, '$')."";
        $limit = rand($match_num_from,$match_num_to);
        $content = preg_replace( '|(]+>)(.*)('.$ex_word.')(.*)(]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
        $content = preg_replace( '|(.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
        $cleankeyword = preg_quote($cleankeyword,'\'');
        $regEx = '\'(?!((<.*?)|(. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?))\'s' . $case;
        $content = preg_replace($regEx,$url,$content,$limit);
        $content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
      }
   }
   return $content;
}

将代码添加到当前主题Functions.php文件中。如果有冲突出现问题,我们需要检查是不是不兼容。检查不出来的话,我们只能使用插件实现。

你可能感兴趣的:(站长教程)