提醒:本文最后更新于 2890 天前,文中所描述的信息可能已发生改变,请仔细核实。
在《无事瞎说几句,顺便说下几个问题》中的#6楼,我提到了
现在解决了,原代码是
add_filter('the_content','the_content_nofollow',999);
function the_content_nofollow($content){
preg_match_all('/href="(.*?)"/',$content,$matches);
if($matches){
foreach($matches[1] as $val){
if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"", "href=\"$val\" rel=\"external nofollow\" ",$content);
}
}
return $content;
}
function the_content_nofollow($content){
preg_match_all('/href="(.*?)"/',$content,$matches);
if($matches){
foreach($matches[1] as $val){
if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"", "href=\"$val\" rel=\"external nofollow\" ",$content);
}
}
return $content;
}
修改为:
add_filter('the_content','the_content_nofollow',999);
function the_content_nofollow($content){
preg_match_all('/href="(.*?)"/',$content,$matches);
if($matches){
foreach($matches[1] as $val){
if( strpos($val,home_url())===false ) $content=str_replace("<a href=\"$val\"", "<a href=\"$val\" rel=\"external nofollow\" ",$content);
}
}
return $content;
}
function the_content_nofollow($content){
preg_match_all('/href="(.*?)"/',$content,$matches);
if($matches){
foreach($matches[1] as $val){
if( strpos($val,home_url())===false ) $content=str_replace("<a href=\"$val\"", "<a href=\"$val\" rel=\"external nofollow\" ",$content);
}
}
return $content;
}
就好了。。。坑爹啊。。。
不过更推荐小天转的js源码,源码如下:
<script type="text/javascript">
function externallinks()
{
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++)
{
var anchor = anchors[i];
if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external nofollow")
{
anchor.target = "_blank";
}
}
}
window.onload = externallinks;
</script>
function externallinks()
{
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++)
{
var anchor = anchors[i];
if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external nofollow")
{
anchor.target = "_blank";
}
}
}
window.onload = externallinks;
</script>
以上这段代码,放在footer.php就可以用,他会对external nofollow标签添加_blank新窗口打开链接的模式。(functions.php那个就省了)
注,我放在footer.php的下面源码之前:
<?php wp_footer(); ?>
</body>
</html>
footer.php的后处理就是好啊。。。预先处理果然有些弊端。。。
转载请注明转自:kn007的个人博客的《修复博客bug,代码高亮的链接自动添加了nofollow问题》
我想说那篇文章评论部分Tifrek提了一个更简洁的 但我没有试过 懒得弄了=、=
@凤翼天堂: 地址给我吧
@kn007: 就那篇评论 每一楼都有我看得懂或者看不懂的方法= =具体可用性和易用性我就不知道了
@凤翼天堂: 给我个地址会手酸啊。。。。我忙N件事一起,烦
@kn007: - -直接转吧 神爱:额...function.php里可以直接写吧...加个代码而已...
用到的东西...
$return
add_filter
Tifrek:@ 敖天羽:反正你的comment_list部分的超链接只有评论者链接嘛,就来个jQuery(".comment_list a").click(function() {window.open(this.href);return false});
@凤翼天堂: functions.php,你们为什么老是不写最后那个 s。。。命令我都清楚。。。jQuery有这个功能,忘记了。。。(根本没记)。。。试试去
每次都忘记
@凤翼天堂:
jQuery(".comment_list a").click(function() {window.open(this.href);return false});
对class类有要求,通用性低了,不是 .comment_list的都没用。。
@kn007: 对的 所以需求部分要写
@凤翼天堂: 我用的是:
jQuery(".commentlist a").click(function() {window.open(this.href);return false});
只是_blank效果,只是不会添加nofollow,不过我有其他实现
@kn007: 我觉得只要能达到效果就行了
@kn007: 评论等级 WE挨批2了
@凤翼天堂: 用上面代码的话,reply都新窗口了。。。覆盖面积太多惹的祸。。。。。你应该常来,或者我们可以交换下友联,我去加上先。。你加不加上是你的事。。
@kn007: 别别别这样……目前我还没准备改标准和加友链呢 而且高三了也没空
@凤翼天堂: 。。。没事嘛,你加上其实也不会怎么样,不加其实也不会怎么样。。
点reply怎么会弹窗= =
@凤翼天堂: 因为reply包括在commentlist类下
果然还是我日志里提到的大叔的代码好用 一点事情都没有
@凤翼天堂: 嗯,squid没搞好,我没弄清楚,你填写的域名是什么,那个红心桃没出来。。
@kn007: 既然如此我考虑一下加一个分类好了>.<有很多朋友单链很久了我不好意思
@凤翼天堂: 呵呵
@凤翼天堂: 总算出来了 吃饭去
@kn007: 博客名是 空の領域 哟~ 抄完作业想个分类名字加上
@凤翼天堂: 已更正,不好意思。。。