今天又一个朋友问起“怎样让评论作者的网址链接在新窗口打开?”,我回说有3种常用方法:1. 修改WP源文件 wp-includes/comment-template.php 里面的 get_comment_author_link 函数 2. jQuery方法 3. WP函数hook方法
那位朋友最后选择了修改WP源文件,因为我刚好在忙暂时提供不了WP函数hook方法给他。
刚才吃完晚饭想了一下,我忘了我自己一直使用的是 jQuery 方法,而hook WP函数方法竟然没去想过,主要是 WP 函数 hook 方法是直接给链接加上 属性,这个是不符合神马 W3C 标准的,所以我个人喜欢用 jQuery 方法,当然熟悉js者也可以用原生js方法。不过各有所需,各有所在意,所以 WP 函数 hook 方法也有其用处,而且也方便。
OK!下面记录一下,并附上我一直使用的 jQuery 方法。
一、WP函数hook方法
大家都知道,一般的主题里面的评论作者链接都是用 comment_author_link() 函数生成的,查看了 WP 源码里面的函数后,立马写好测试一下解决,就是把原来的函数用 hook 方法给每个链接加上。
把下面的代码扔进主题的 functions.php 里面就行了
/* 评论作者链接新窗口打开 */ function my_get_comment_author_link() { //by zwwooooo $url = get_comment_author_url( $comment_ID ); $author = get_comment_author( $comment_ID ); if ( empty( $url ) || 'http://' == $url ) return $author; else return "<a target='_blank' href='$url' rel='external nofollow' class='url'>$author</a>"; } add_filter('get_comment_author_link', 'my_get_comment_author_link');
二、jQuery 方法
1. 加载 jQuery 库,不懂者自行搜索
2. 用下面的 jQuery 代码给评论链接加上
jQuery(document).ready(function(){ $('.commentlist a.url').attr({target:"_blank"}); //一般主题的评论列表ol的class就是commentlist,如有不同自行修改 });
ps1: 其实可以修改 comments.php,在 <ol class="commentlist"> 里面加上一个 id,如 <ol id="commentlist" class="commentlist">,有利于提高 jQuery 执行效率
jQuery(document).ready(function(){ $('#commentlist a.url').attr({target:"_blank"}); });
ps2: 又其实你可以写成 jQuery 的扩展函数,如下:(注意:函数要写在调用的前面)
$.fn.add_target_blank = function(){return $(this).attr({target:"_blank"});};
函数调用,例如评论作者链接(#commentlist a.url)和侧边栏的链接(#sidebar a)都在新窗口打开,可以这样:
$('#commentlist a.url, #sidebar a').add_target_blank();
要用哪个方法就自己决定了,当然网上可能还有更好的方法,自行搜索。
完。
- 本文标题:评论作者链接新窗口打开
- 本文链接:https://zww.me/archives/25472
- 发布时间:2011年06月25日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
沙发
@A.shun
真速度,还是当年大腿男
哈哈,没想到这么快就写出方法来了,多谢多谢。
没想到zww这么热心,真是一个大好淫
@爱宝贝
我不是好淫,我是淫而已,哈哈哈
要通过验证还必须是 js 的方法呐
@A.shun
所以就看个人的纠结情结了
哎呀 沙发被抢了
@爱宝贝
你太慢了
以前是用WP函数hook方法的。現在沒用這個功能。的
@Demon
最好的还是js/jq方式
@zwwooooo
JS/JQ也比较方便
@Demon
嗯嗯
果断JQuery,一直在用,哈哈。
@奚少
对对
一直用的jquery方法
@iSayme
jq最好了
想了下我是用js加上去的,不过打算下次改主题就不要这个新窗口打开了(我自己都是自己中键的。。。)
@流年
其实我习惯用手势打开链接,但是主题要考虑访客,不是自己
@zwwooooo
考虑到现在的浏览器都有了新标签页打开的功能,于是就不想加上去了
@流年
其实不太需要
习惯加rel=external再控制其打开方式, 都怪以前xthml太严格导致自己都不敢用target了
@phoetry
其实不需要太在意验证
@zwwooooo
洁癖使然, , , 苦痛无比
@phoetry
可以放宽洁癖,这样你会活得更开心
我也用的jquery,不过貌似ajax翻页之后会失效。
@axiu
嘻嘻,ajax翻页要重新遍历的,不然失效。
@zwwooooo
正是如此
先用 hook 法,加个 rel="external" ,再用
$("a[rel*='external']").click(function(){window.open(this.href);return false;});
进行新窗口打开、、
@Kars
其实这样也很累,玩玩就好了,以后我会全部去掉。
貌似这个方法是挺多的
@民工
很多种,原理类似
不错不错,我比较喜欢第一种方法
@皇家元林
不纠结神马标准就第一种吧
吾直接在主題中修改的
@小雞雞!
怎样修改?难道文章说的不是要修改主题么?
我用的jQuery方法
@情歌
jQ简单
直接修改模板即可,感觉方便点。
@刘印博客
呵呵,比较不通用
@zwwooooo
话说PR更新了,刚才查了下你的,6了。
牛呀。
@刘印博客
淡定,国内很难转化为¥
@zwwooooo
应该还是有点的吧,做谷歌seo的,应该会需要。
@刘印博客
被国内一些人搞的烂价了,我是坚持不烂。
我是用插件解决的。
@商城正品店
插件方便简单
我是使用jQuery自动识别外部链接在新窗口打开的……
@竹箫
嗯,这样更简单了
Jquery 的比较好呢、
@。潇
我也喜欢jq方式
jquery是个非常好的库啊
@网名繁体字
是的