分享各种网络资源
是我乃至整个互联网的精髓所在
 您目前所在位置: 站点首页 » WordPress » 代码 » WordPress文章添加标签内链
+

WordPress文章添加标签内链

WordPress文章添加标签内链-BanYuner

WordPress文章添加标签内链

问题描述

这个功能其实很久之前我使用过,但是为什么后来没有使用呢,因为跟我目前使用的目录代码冲突了,冲突表现形式为,如果H2标签中含有标签关键字,那么就会被内链,但是目录是不能显示带有连接形式的H标签文字的,请看下图:
WordPress文章添加标签内链-BanYuner

WordPress文章添加标签内链

我们可以看到目录中是有5个标题的,但是实际上呢,它省略了几个标题,如下图:
WordPress文章添加标签内链-BanYuner

WordPress文章添加标签内链

这个我也是使用的H2标签,按照代码的功能来说的话,这个标题应该是可以被纳入目录中的,可以并没有被纳入,那么为什么会这样呢?我的想法就是因为目录中含有链接,就会影响代码的匹配等问题。

那么如何解决呢?这里我首先附上标签内链的代码:

相关代码

/* 自动为文章内的标签添加内链开始 */
$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, '$'),__('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$2WordPress学习$4$5', $content);
$content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2WordPress学习$4$5', $content);
$cleankeyword = preg_quote($cleankeyword,'\'');
$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
$content = preg_replace($regEx,$url,$content,$limit);
$content = str_replace( 'WordPress学习', stripslashes($ex_word), $content);
}
}
return $content;
}
add_filter('the_content','tag_link',1);
/* 自动为文章内的标签添加内链结束 */

代码方面直接丢在functions.php中即可。

解决办法

我目前的解决办法就是很简单的不断尝试的出来的,也不知道有什么后遗症或者有什么问题,至少现在还没有看到什么问题的。解决办法如下:

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[^>]+>)(.*)('.$keyword.')(.*)(</a[^>]*>)|U'.$case, '$1$2WordPress学习$4$5', $content);
$content = preg_replace( '|(<img)(.*?)('.$keyword.')(.*?)(>)|U'.$case, '$1$2WordPress学习$4$5', $content);
$content = preg_replace( '|(<h[^>]+>)(.*)('.$keyword.')(.*)(</h[^>]*>)|U'.$case, '$1$2WordPress学习$4$5', $content);
$cleankeyword = preg_quote($cleankeyword,'\'');
$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
$content = preg_replace($regEx,$url,$content,$limit);
$content = str_replace( 'WordPress学习', stripslashes($keyword), $content);
}
}
return $content;
}
add_filter('the_content','tag_link',1);

大家可以看到,我添加了一行代码:

$content = preg_replace( '|(<h[^>]+>)(.*)('.$keyword.')(.*)(</h[^>]*>)|U'.$case, '$1$2WordPress学习$4$5', $content);

并且修改了:

$content = str_replace( 'WordPress学习', stripslashes($keyword), $content);

中的ex_wordkeyword,这样一来就可以解决了。说实话,原理我并不知道,我就一点点的尝试修改后得出的结果,如果有大神可以帮忙再完善一下或者推翻重来都是极好的。

关注我们 打赏 分享此文
微信扫码,关注我们
扫码,支持我
WordPress文章添加标签内链
支付宝(点击图片切换)
扫码,支持我
WordPress文章添加标签内链
微信(点击图片切换)
扫码,手机看
WordPress文章添加标签内链
匿名

个人评价:┃草根博主┃站点无技术含量┃文章内容不够吸引人┃转载内容随处可见┃资源均来自网络┃分享是我的宗旨,也是这个站点存在意义,分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的

相关推荐

  • WordPress纯代码实现文章AJAX点赞

    WordPress纯代码实现文章AJAX点赞

    这个功能其实在很多主题中都集成进去了,DUX默认的主题里面也是有这个功能的,但是我将其删除了,之后换上了评星插件了,评 ...

    点击查看
  • WordPress页面(page)添加标签和分类功能

    WordPress页面(page)添加标签和分类功能

    WordPress页面(page)添加标签和分类功能 文章分类目录和标签功能是WordPress自带的功能,但是很多时候,喜欢使用页面的用 ...

    点击查看
  • 如何在WordPress文章中插入视频

    如何在WordPress文章中插入视频

    如何在WordPress文章中插入视频 现在很多站点都是做视频站点的,同时也有很多视频站点都是使用的CK播放器,如果你已经使用了 ...

    点击查看
WordPress文章添加标签内链
1 + 7 =
  • 昵称 (必填)  
  • 邮箱 (必填)
  • 网址 (选填)