Old

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

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25538

211 comments

  1. 老杨 老杨 Firefox 7 Firefox 7 Windows 7 Windows 7

    先评论了再说
    我那个主题 评论表情有问题 用不了 js问题 改天再找你看看

    沙发
  2. A.shun A.shun Opera Next 12 Opera Next 12 Windows XP Windows XP

    沙发 :oops:

    板凳
  3. derek derek Firefox 7 Firefox 7 Windows 7 Windows 7

    板凳。。。。。。shun太快了

    地板
  4. ......
  5. 闲云野鹤 闲云野鹤 Google Chrome 15 Google Chrome 15 Windows 7 Windows 7

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

    61楼
  6. 象牙塔 象牙塔 360Safe Explorer 360Safe Explorer Windows XP Windows XP

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

    62楼
  7. 给WP增加评论邮件通知 | zhx's blog - pingback on 2012/01/01/ 19:31
    63楼
  8. crazy crazy Google Chrome 16 Google Chrome 16 Windows 7 Windows 7

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

    64楼
    • zwwooooo zwwooooo Firefox 9 Firefox 9 Windows 7 Windows 7

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

    • crazy crazy Google Chrome 16 Google Chrome 16 Windows 7 Windows 7

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

    • zwwooooo zwwooooo Firefox 9 Firefox 9 Windows 7 Windows 7

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

  9. 关于嵌套评论 | cCYANn - pingback on 2012/02/13/ 09:57
    65楼
  10. 疯子 疯子 Internet Explorer 9 Internet Explorer 9 Windows 7 Windows 7

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

    66楼
    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

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

  11. zhx zhx Firefox 12 Firefox 12 Windows 7 Windows 7

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

    67楼
    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

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

  12. 北极飞鱼 北极飞鱼 Maxthon 3 Maxthon 3 Windows 7 Windows 7

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

    68楼
  13. 小雨 小雨 Firefox 20 Firefox 20 Windows XP Windows XP

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

    69楼
    • zwwooooo zwwooooo Firefox 19 Firefox 19 Windows 7 Windows 7

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

  14. 予沐 予沐 Google Chrome 24 Google Chrome 24 Windows 7 Windows 7

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

    70楼
  15. joicemao joicemao Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

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

    71楼
  16. 大肥羊 大肥羊 Firefox 25 Firefox 25 Windows 7 Windows 7

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

    72楼
  17. CY's BLOG CY's BLOG Google Chrome 32 Google Chrome 32 Windows 7 Windows 7

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

    73楼
    • zwwooooo zwwooooo Firefox 27 Firefox 27 Windows 8.1 Windows 8.1

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

    • CY's BLOG CY's BLOG Google Chrome 26 Google Chrome 26 Windows 7 Windows 7

      @zwwooooo
      我主题默认支持。

    • zwwooooo zwwooooo Firefox 27 Firefox 27 Windows 8.1 Windows 8.1

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

  18. helsinglee helsinglee Google Chrome 47 Google Chrome 47 Windows 10 Windows 10

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

    74楼
  19. I4EGY I4EGY Google Chrome 48 Google Chrome 48 Windows 8 Windows 8

    好厉害! :smile:

    75楼
  20. 次克 次克 Safari 10 Safari 10 Mac OS X 10.12 Mac OS X 10.12

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

    76楼
    • zwwooooo zwwooooo Firefox 51 Firefox 51 Windows 10 Windows 10

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

    • 次克 次克 Safari 10 Safari 10 iPhone iOS 10.2.1 iPhone iOS 10.2.1

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

    • zwwooooo zwwooooo Firefox 52 Firefox 52 Windows 10 Windows 10

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

    • zwwooooo zwwooooo Firefox 52 Firefox 52 Windows 10 Windows 10

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

    • 次克 次克 Firefox 17 Firefox 17 GNU/Linux GNU/Linux

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

    • zwwooooo zwwooooo Firefox 52 Firefox 52 Windows 10 Windows 10

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

    • 次克 次克 Safari 10 Safari 10 Mac OS X 10.12 Mac OS X 10.12

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

    • zwwooooo zwwooooo Firefox 52 Firefox 52 Windows 10 Windows 10

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

Leave a Reply