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. 郑永 says:

    符合神马 W3C 标准,再下有何高见?我主页死活都有问题,还望告之。

    1. zwwooooo says:

      @郑永
      你的连基本的html语法错误都那么多 - - img不闭合、p标签无闭合……

    2. sc_bant says:

      @zwwooooo
      :arrow: 如此猎奇。
      看了下,果然好多没有闭合……

    3. zwwooooo says:

      @sc_bant
      霍霍,看来对方根本就没看我们的回复

    4. 郑永 says:

      @zwwooooo
      来看了,哈哈,我去检查一下啊。不过有没有语法修复器啊?呵呵

    5. 郑永 says:

      @zwwooooo
      回去看了下,果然是~~ 难道是我在编辑器里没注意到啊,不过就算我改了,还是有问题,比如侧边的微博代码。

    6. 郑永 says:

      @zwwooooo
      就第一个没闭合 :) <p

    7. zwwooooo says:

      @郑永
      慢慢修正

    8. 郑永 says:

      @zwwooooo
      能再帮我看一下吗?为什么div 会错

    9. zwwooooo says:

      @郑永
      这个要自己来了,我没那么多时间帮你分析,先检查你的html代码规范性再说,不然你太多error了。

  2. 果然很强大,顺便把文章里面的链接也这么修改了下 :wink:

    1. zwwooooo says:

      @闲云野鹤
      哈,可以的

  3. 七七 says:

    不错,了解支持下!

  4. 先看看 says:

    你网站还在折腾啊

    1. zwwooooo says:

      @先看看
      别人问起就写写

  5. 老饕 says:

    我都是Ctrl+Click~

    1. zwwooooo says:

      @老饕
      本应如此,可惜国内很多人不喜欢/不会使用 - -

  6. 老早写的这么详细,我就不用到处找了呵呵 :mrgreen:

    1. zwwooooo says:

      @yesureadmin
      其实你可以问我的,霍霍

  7. liveme says:

    我用的也是jQuery :mrgreen:

    1. zwwooooo says:

      @liveme
      jQuery方便

  8. ckmp3 says:

    :smile: :smile: 好东西 正要要用~谢谢楼主

    1. zwwooooo says:

      @ckmp3
      别客气,拿去

  9. 张扬扬 says:

    符合w3c 的 还是不错的

    1. zwwooooo says:

      @张扬扬
      有人比较纠结这个

  10. 我这个先收藏,第一种方法看来很方便啊

  11. 砼砼 says:

    其实,我一直没搞懂的就是add_filter和add_Aicxxx什么的区别。。。 :mrgreen:

    1. zwwooooo says:

      @砼砼
      我也不懂,反正这样就行了

  12. 园子 says:

    我使用的应该就是jQuery 方法。

    1. zwwooooo says:

      @园子
      jQ方法好

  13. 午夜客 says:

    超链接目标
    _blank — 新窗口或新标签。

    1. zwwooooo says:

      @午夜客
      你在说啥呢?

  14. 好像第一种方法比较适合我。谢谢!

    1. zwwooooo says:

      @歪歪数码
      看自己适合吧

  15. 老李 says:

    这个没注意过 人要走强留也不好

    1. zwwooooo says:

      @老李
      目的不是这个。

  16. 益酷网 says:

    总结的不错,学习一下,正需要了!

    1. zwwooooo says:

      @益酷网
      木有总结。

  17. 哪个JQ代码竟然在我的主题里和几个JQ都有冲突

    1. zwwooooo says:

      @yesureadmin
      一般不会冲突的,除非功能类似

  18. 不错,升到3.2了用上了你的hook方法,不错哦

  19. 球犯 says:

    谢谢啦~之前一直是用插件 等下晚点折腾下试试 mark~

  20. 用上了 :razz:

回复给 小不点 ¬
取消回复

昵称 *

网址

B em del U Link Code Quote