Loading
0

WordPress如何用代码自动给文章标签(关键词)添加该标签的内部链接

公众号搜索菜鸟站长之家

偶尔看到了有朋友在问:有没有WordPress自动将文章中出现的标签放上链接?然后多次探索探究找到了自动将文章中出现的标签加链接的方法。这方法很简单,将下面的代码添加到主题的 functions.php 即可:

/* WordPress 自动为文章标签添加该标签的链接 */
function wpkj_auto_add_tag_link($content){

    $limit = 1; // 设置同一个标签添加几次链接

    $posttags = get_the_tags();

    if ($posttags) {
        foreach($posttags as $tag) {
            $link = get_tag_link($tag->term_id);
            $keyword = $tag->name;

            $cleankeyword = stripslashes($keyword);
            $url = '<a target="_blank" href="'.$link.'" title="'.str_replace('%s', addcslashes($cleankeyword, '$'), __('View all posts in %s')).'">'.addcslashes($cleankeyword, '$').'</a>';
            $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s';
            $content = preg_replace($regEx,$url,$content,$limit);
        }
    }

    return $content;
}
add_filter( 'the_content', 'wpkj_auto_add_tag_link', 1 );

你可以根据自己的需要修改第4行的数值,来改变标签内链数量。

大小写问题增加版

/**
 * 自动为文章内的标签添加内链(大小写不敏感)
 */
//连接数量
 $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);

 

文章声明:
1、本站文章来源于互联网,仅供学习交流使用,严禁用于商业用途,因此造成的一切法律后果自行承担。
2、本站不对文章内容的完整性和安全性负责,请自行辨别,如发现有问题,请及时联系我们进行处理。
3、若文章中有侵权或不适当内容,请留言告知我们,本站会第一时间进行处理。