学习

用代码给WordPress自动增加标签链接增加网站内链

2020年1月18日

大家都知道一个简单的SEO知识,那就是网站的内链功能越好 ,我们网站页面的权重也就高,有利于我们排名。

除了有利于我们页面排名意外,也有利于阅读文章的用户通过标签的链接直接访问相关的内容,无需搜索查找。这有利于我们网站的用户体验。

今天我们就来学习以下,Wordpress自动增加标签内链的方法,不用任何插件。

从上次发布的,给文章增加点击量统计和昨天发布的给文章增加字数统计和阅读时间,这次第三个小功能,也非常适用,不用我们每次麻烦通过手动的添加链接来增加内链了。

这个方法非常简单,通过给functions.php增加一段代码,来实现可控制的通过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 .= ">".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('the_content','tag_link',1);
/* 自动为文章内的标签添加内链结束 */

把以上代码复制到你的Wordpress主题functions.php里面即可,保存之后返回页面查看。即可看到效果。

其中两段代码需要注意设置

$match_num_from = 1;        //一篇文章中同一个标签少于几次不自动链接
$match_num_to = 1;      //一篇文章中同一个标签最多自动链接几次

第一行是代表,文章中标签的少于几个不自动增加链接。这个根据我们情况,自己修改数字。

第二行是代表,同一篇文章中出现的多个标签,自动链接几次。比如像本文如果按照标签Wordpress共出现四次,如果上面的数字为1,那么就自动链接最先出现的,如果是5,那么4次出现的Wordpress都将自动增加链接。

大家根据自己网站的情况,自行设置吧。

这个代码的功能呢,不光是给我们网站增加内链,而且还是养成良好书写习惯的一个提醒。

这个代码是区分大小写的,比如,如果你填写的表示大写的Wordpress,如果你在写文章的时候写成小写的wordpress,那么它是不会自动链接的。这样也避免我们为链接而链接,也可以让我们养成良好的习惯。该大写就大写,该小写就小写,空格等都让我们无形中养成来良好的习惯。