分享各种网络资源
是我乃至整个互联网的精髓所在
最新消息:开启被动注册模式,详情点击这里,同时接小单,QQ:330733312
 您目前所在位置: 站点首页 » WordPress » WordPress 代码 » WordPress文章添加标签内链
  • +
  • 14
  • WordPress文章添加标签内链

  • 问题描述
  • 相关代码
  • 解决办法
  • WordPress文章添加标签内链-BanYuner

    问题描述

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

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

    这个我也是使用的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$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);
    /* 自动为文章内的标签添加内链结束 */
    

    代码方面直接丢在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$2%&&&&&%$4$5', $content);
    $content = preg_replace( '|(<img)(.*?)('.$keyword.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
    $content = preg_replace( '|(<h[^>]+>)(.*)('.$keyword.')(.*)(</h[^>]*>)|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($keyword), $content);
    }
    }
    return $content;
    }
    add_filter('the_content','tag_link',1);
    

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

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

    并且修改了:

    $content = str_replace( '%&&&&&%', stripslashes($keyword), $content);
    

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

    关注我们 打赏 分享此文

    微信扫码,关注我们

    扫码,支持我

    WordPress文章添加标签内链

    支付宝(点击图片切换)

    扫码,支持我

    WordPress文章添加标签内链

    微信(点击图片切换)

    扫码,手机看

    WordPress文章添加标签内链
    匿名

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

    相关推荐

    • WordPress 分类描述添加可视化编辑模式

      WordPress 分类描述添加可视化编辑模式

      可视化编辑模式一直是很多人喜欢使用的,但是我个人方面还是喜欢传统的 html 模式,不是别的,主要是自己写的东西通过代码出现的就是自己的,而...

      点击查看
    • 6 款 WordPress 缓存插件对比测试

      6 款 WordPress 缓存插件对比测试

      缓存插件我相信每个站点几乎都是在使用的,插件的原理并不是能提高带宽也不是说能提高页面加载速度等等,仅仅是为了降低服务器的压力,当人群数量大量...

      点击查看
    • WordPress 获取分类第一篇文章第一张图片地址

      WordPress 获取分类第一篇文章第一张图片地址

      这个功能我不知道网络上面有没有相关教程,至少我是没有看到的,所以这里还是简单的说一下,可能其中有不少问题,也可能是我的方法太过复杂,但是还是...

      点击查看
    WordPress文章添加标签内链
    5 + 0 =