WP非插件利用Tag标签实现自动内链代码

使用WordPress博客建站 人们会使用 WP Keyword Link (已不提供下载)插件为文章的关键词(标签)加上链接,以增加内链来作 SEO 的优化,给文章加上内部链接有利于增加搜索引擎收录。有些人担心wordpress过多使用插件会影响网站SEO优化,并且插件多了对博客的速度肯定有影响。

下面分享一个非插件实现的方法。

在主题文件夹的 function.php 文件最后一个 ?> 前加入以下代码:

 1//tag自动内链
 2$match_num_from = 1; //一篇文章中同一个关键字少于多少不锚文本(这个直接填1就好了)
 3$match_num_to = 2; //一篇文章中同一个关键字最多出现多少次锚文本(建议不超过2次)
 4//连接到WordPress的模块
 5add_filter('the_content','tag_link',1);
 6//按长度排序
 7function tag_sort($a, $b){
 8if ( $a->name == $b->name ) return 0;
 9return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
10}
11//改变标签关键字
12function tag_link($content){
13global $match_num_from,$match_num_to;
14$posttags = get_the_tags();
15if ($posttags) {
16usort($posttags, "tag_sort");
17foreach($posttags as $tag) {
18$link = get_tag_link($tag->term_id);
19$keyword = $tag->name;
20//连接代码
21$cleankeyword = stripslashes($keyword);
22$url = "".addcslashes($cleankeyword, '$')."";
23$limit = rand($match_num_from,$match_num_to);
24 
25//不连接的代码
26$content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(]*>)|U'.$case, '$1$2%&&&&& %$4$5', $content);
27$content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&& %$4$5', $content);
28 
29$cleankeyword = preg_quote($cleankeyword,'\'');
30 
31$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?))\'s' . $case;
32 
33$content = preg_replace($regEx,$url,$content,$limit);
34 
35$content = str_replace( '%&&&&& %', stripslashes($ex_word), $content);
36 
37}
38}
39return $content;
40}