2011年06月25日 108条评论

评论作者链接新窗口打开

今天又一个朋友问起“怎样让评论作者的网址链接在新窗口打开?”,我回说有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();

要用哪个方法就自己决定了,当然网上可能还有更好的方法,自行搜索。

完。

zww
or
oooo

“评论作者链接新窗口打开”有108条评论

  1. A.shun says:

    沙发 :oops:

    1. zwwooooo says:

      @A.shun
      真速度,还是当年大腿男

  2. 爱宝贝 says:

    哈哈,没想到这么快就写出方法来了,多谢多谢。
    没想到zww这么热心,真是一个大好淫 :mrgreen:

    1. zwwooooo says:

      @爱宝贝
      我不是好淫,我是淫而已,哈哈哈

  3. A.shun says:

    要通过验证还必须是 js 的方法呐

    1. zwwooooo says:

      @A.shun
      所以就看个人的纠结情结了

  4. 爱宝贝 says:

    哎呀 :arrow: 沙发被抢了

  5. Demon says:

    以前是用WP函数hook方法的。現在沒用這個功能。的

    1. zwwooooo says:

      @Demon
      最好的还是js/jq方式

    2. Demon says:

      @zwwooooo
      JS/JQ也比较方便

  6. 奚少 says:

    果断JQuery,一直在用,哈哈。

  7. iSayme says:

    一直用的jquery方法

    1. zwwooooo says:

      @iSayme
      jq最好了

  8. 流年 says:

    想了下我是用js加上去的,不过打算下次改主题就不要这个新窗口打开了(我自己都是自己中键的。。。)

    1. zwwooooo says:

      @流年
      其实我习惯用手势打开链接,但是主题要考虑访客,不是自己

    2. 流年 says:

      @zwwooooo
      考虑到现在的浏览器都有了新标签页打开的功能,于是就不想加上去了

    3. zwwooooo says:

      @流年
      其实不太需要

  9. phoetry says:

    习惯加rel=external再控制其打开方式, 都怪以前xthml太严格导致自己都不敢用target了 :neutral:

    1. zwwooooo says:

      @phoetry
      其实不需要太在意验证

    2. phoetry says:

      @zwwooooo
      洁癖使然, , , 苦痛无比

    3. zwwooooo says:

      @phoetry
      可以放宽洁癖,这样你会活得更开心

  10. axiu says:

    我也用的jquery,不过貌似ajax翻页之后会失效。

    1. zwwooooo says:

      @axiu
      嘻嘻,ajax翻页要重新遍历的,不然失效。

    2. 流年 says:

      @zwwooooo
      正是如此

  11. Kars says:

    先用 hook 法,加个 rel="external" ,再用
    $("a[rel*='external']").click(function(){window.open(this.href);return false;});
    进行新窗口打开、、

    1. zwwooooo says:

      @Kars
      其实这样也很累,玩玩就好了,以后我会全部去掉。

  12. 民工 says:

    貌似这个方法是挺多的

    1. zwwooooo says:

      @民工
      很多种,原理类似

  13. 不错不错,我比较喜欢第一种方法

    1. zwwooooo says:

      @皇家元林
      不纠结神马标准就第一种吧

  14. 吾直接在主題中修改的 :grin: :grin:

    1. zwwooooo says:

      @小雞雞!
      怎样修改?难道文章说的不是要修改主题么?

  15. 情歌 says:

    我用的jQuery方法

  16. 直接修改模板即可,感觉方便点。

    1. zwwooooo says:

      @刘印博客
      呵呵,比较不通用

    2. @zwwooooo
      话说PR更新了,刚才查了下你的,6了。
      牛呀。 :lol:

    3. zwwooooo says:

      @刘印博客
      淡定,国内很难转化为¥ :mrgreen:

    4. @zwwooooo
      应该还是有点的吧,做谷歌seo的,应该会需要。

    5. zwwooooo says:

      @刘印博客
      被国内一些人搞的烂价了,我是坚持不烂。

  17. 我是用插件解决的。

    1. zwwooooo says:

      @商城正品店
      插件方便简单

  18. 竹箫 says:

    我是使用jQuery自动识别外部链接在新窗口打开的……

    1. zwwooooo says:

      @竹箫
      嗯,这样更简单了

  19. 。潇 says:

    Jquery 的比较好呢、 :wink:

    1. zwwooooo says:

      @。潇
      我也喜欢jq方式

  20. jquery是个非常好的库啊

回复给 zwwooooo ¬
取消回复

昵称 *

网址

B em del U Link Code Quote