2011年10月29日 211条评论

WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知

“WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知”是我上个星期就折腾好的功能,目前我和A.shun在用,非常方便。

我一直想要这功能,但一直木有高手去写,于是自己用蛋疼的 jQuery 实现……

前提

【一定要】无限嵌套:完美的WordPress无限嵌套回复方法

【可选】要支持评论回复通知,那么参考:整理: WordPress 评论回复邮件通知代码
ps:好吧,前一篇我卖关子了,其实就这里用用而已……

步骤

开始以前再次提醒:你的主题一定要支持无限嵌套评论!!!

1. 把下面蛋疼的 jQuery 代码存为 admin_reply.js,放在所用主题目录。或者直接点这里下载

WordPress 版本 >= 4.4(2017.03.08 Update

(function ($, window) {
	$(document).ready(function(){
		//////// for WordPress >= 4.4 ////////
		if ( $('#replycontent').length ){
			var $replycontent = $('#replycontent');
			$replycontent.attr('onkeydown','if(event.ctrlKey){if(event.keyCode==13){document.getElementById(\'replybtn\').click();return false}};');
			$('#the-comment-list').on('click', '.vim-r', function(){
				$replycontent.off('focus');
				$('#replybtn').off('click')
				var $thiscomment = $(this).parent().parent().parent().parent(),
						haveParent = $thiscomment.find('td.comment .comment-author').next().is('a') ? 1 : '',
						parentID = haveParent == 1 ? $thiscomment.find('td.comment .comment-author').next().attr('href').split('#')[1].split('-')[1] : '',
						$submitted_on = $thiscomment.find('.submitted-on'),
						atid = '#' + $submitted_on.children('a:first').attr('href').split('#')[1],
						atname = $thiscomment.find('td.author').find('strong').text().replace(/^(\s|\xA0)+|(\s|\xA0)+$/g, ''),
						replyto = '<a href="' + atid + '">@' + atname + '</a>' + " ";
				$replycontent.val('').focus().attr('data-replyto',replyto).attr('data-parent-id',parentID);
				$('#replybtn').on('click', function(){
					$replycontent.val($replycontent.attr('data-replyto') + $replycontent.val());
					$replycontent.attr('data-replyto','').attr('data-parent-id','');
					$('#replybtn').off('click');
				});
				$('#replysubmit .cancel').on('click', function(){
					$replycontent.off('focus');
					$('#replybtn').off('click');
				});
			});
		};
	});
})(jQuery, window);

WordPress 版本 < 4.4Update: 2011.10.30 修正 @xxx 的链接——感谢axiu同志反馈)

jQuery(document).ready(function($){ //WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知 by zwwooooo
     $('.vim-r').click(function(){
         var $submitted_on=$(this).parent().parent().parent().children('.submitted-on');
         if ($submitted_on.children('a').length == 2) {
             var parentID=$submitted_on.find('a:last').attr('href').split('#')[1];
             $('#replyrow').find('#comment_ID').attr('value',parentID);
         }
         var atid = '"#' + $submitted_on.children('a:first').attr('href').split('#')[1].split('-')[1] + '"';
         var atname = $submitted_on.parent().prev('td.author').find('strong').text().replace(/^(\s|\xA0)+|(\s|\xA0)+$/g, '');
         $("#replycontent").attr('value','<a href=' + atid + '>@' + atname + ' </a>\n').focus();
         $("#replycontent").attr('onkeydown','if(event.ctrlKey){if(event.keyCode==13){document.getElementById(\'replybtn\').click();return false}};');
         $('#replybtn').click(function(){
             $("#replycontent").attr('onkeydown','');
         })
     })
 });

2. 然后把下面这段加入到主题的 functions.php 里面去:

function admin_reply_admin_enqueue_scripts( $hook_suffix ) {
    wp_enqueue_script( 'admin-reply-js', get_template_directory_uri() . '/admin_reply.js', false, 'by-zwwooooo' );
}
add_action( 'admin_print_styles', 'admin_reply_admin_enqueue_scripts' );

然后就没有然后了……

zww
or
oooo

“WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知”有211条评论

  1. 觉得要能把表情也加入进去就好了

    1. zwwooooo says:

      @闲云野鹤
      木有研究了,奶来完善一下吧 :mrgreen:

    2. 盘龍 says:

      @zwwooooo
      我来测试一下第三层回复

    3. @盘龍
      再进一步测试 :razz:

  2. 象牙塔 says:

    总算弄好了,之前一直出不来结果,原来是路径弄错了,我把它放到了js文件里,汗啊

    1. zwwooooo says:

      @象牙塔
      呵呵,注意细节

  3. 给WP增加评论邮件通知 | zhx's blog says:

    [...] 这回胆大了,接着参照Z大的教程增加了WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知功能,目前我自己测试是正常的~ [...]

  4. crazy says:

    请问你没使用在编辑功能吗?其实想要测试看这功能....

    1. zwwooooo says:

      @crazy
      木有,不是必须的就不用了

    2. crazy says:

      @zwwooooo
      那么可以请教下关于再编辑的问题吗?
      发布评论后,点击再编辑,在不更改内容的情况下再点击发布按钮,没有出现重复评论的提示,而是再发布一次,如果重复同样的步骤,又会再发布一次,导致页面有`好几个相同的评论,但是刷新页面后就只是显示一个评论而已,请问会是什么问题导致的呢?
      谢谢。

    3. zwwooooo says:

      @crazy
      因为“再编辑”是获取刚提交的评论ID对应的评论内容进行更改。这个问题最好直接请教ajax评论提交代码的作者willin

  5. 关于嵌套评论 | cCYANn says:

    [...] 2012-2-13更新:把@功能加上去了,虽然没有特别实际的作用,但是还是享受一下又有at又有嵌套的伪快感吧~ 另外关于后台回复的@效果,旧评论悬浮框等等都可以在这里找到:zww的方法。 [...]

  6. 疯子 says:

    :sad: 用通知评论可以增加互动哦。

    1. zwwooooo says:

      @疯子
      嗯,但要注意是“有人回复了你的评论”才通知比较好

  7. zhx says:

    用你的办法做了没有用哎. :shock: 为什么?是不是要下载对应的plugin?(我是用的主题默认的。)

    1. zwwooooo says:

      @zhx
      注意,是后台直接回复评论。另外看我写的“注意”

  8. 北极飞鱼 says:

    博主你好 你能给我一份完整的 comments.php和相关代码吗,弄了好长时间还是没有搞定哦,非常感谢!!

    1. zwwooooo says:

      @北极飞鱼
      随便下载我的一个免费主题就有了。

  9. 小雨 says:

    站长您好,我特别喜欢您的博客的留言楼层,还有回复的隔开的这个风格,请问可以分享么?

    1. zwwooooo says:

      @小雨
      直接看css就行了啊,况且一般的wp主题都是支持嵌套,只是样式不同而已

  10. 予沐 says:

    虽然很早的文章,受教了~

  11. joicemao says:

    我这个主题折腾半天没整上,要去咨询作者了。。

  12. 大肥羊 says:

    :mrgreen: 大叔, 在手机客户端回复怎么加?

    1. zwwooooo says:

      @大肥羊
      不需要做修改啊

    2. 大肥羊 says:

      @zwwooooo
      没有 @ 效果的 :mrgreen:

    3. zwwooooo says:

      @大肥羊
      手机app木有折腾,其实现在的WP后台做的很不错了,你可以用手机端APP,然后直接“查看站点”访问后台,因为支持响应式了。

  13. CY's BLOG says:

    疑问,为什么要支持无限嵌套呢?
    只嵌套三层不行?

    1. zwwooooo says:

      @CY's BLOG
      可以,你不开启嵌套也行。无限嵌套只是为了方便经常在评论里讨论各种问题,有需要的自然就会去折腾,也没说这样就很好。

    2. CY's BLOG says:

      @zwwooooo
      我主题默认支持。

    3. zwwooooo says:

      @CY's BLOG
      因为别人整合进去了,wp默认是不支持的,这也不是嵌套的初衷。

  14. helsinglee says:

    大叔,修订更新了没哦?顶顶 新年快乐 :razz:

    1. zwwooooo says:

      @helsinglee 你是说后台回复么?

    2. helsinglee says:

      @zwwooooo 前台哦,还有你的Quote功能咋个搞的哦

  15. I4EGY says:

    好厉害! :smile:

  16. 次克 says:

    现在这段代码还可以使用吗?

    1. zwwooooo says:

      @次克 头部已说明 WP 4.4 无效,我看这几天能否整理下。

      1. 次克 says:

        @zwwooooo 很需要,楼主加油! :cool:

        1. zwwooooo says:

          @次克 更新了,你试试,文章中“WordPress 版本 >= 4.4”部分代码代替原来的

        2. zwwooooo says:

          @次克 另外注意下,新版本的 @xxx 是提交时自动加上的,而不是原来点击回复就有。

          1. 次克 says:

            @zwwooooo 博主,我试了一下,还是没用
            我用的是插件的WP-Mail-SMTP
            可以去我的博客帮我看看吗?

            1. zwwooooo says:

              @次克 这里的只是后台评论回复自动加 @xxx,如果要评论回复邮件通知你要添加“评论回复邮件通知代码”,而且这还跟你服务器是否安装好邮件服务有关,你先保证你的博客本身评论回复就能邮件通知。

              1. 次克 says:

                @zwwooooo 如何保证你的博客本身评论回复就能邮件通知呢?
                如果博客有新的评论,博客会自动通知我,可是我却无法通知别人。

                1. zwwooooo says:

                  @次克 访客的评论回复通知是需要另外加的功能,可以用插件或者看看《整理: WordPress 评论回复邮件通知代码》自己折腾下,如果能工作了,那么现在这篇文章说的才会工作。

回复给 huangjun ¬
取消回复

昵称 *

网址

B em del U Link Code Quote