几个关于WordPress里留言回复的邮件通知的问题

在WordPress里对留言的回复通过email告知对方是一种很好的交互方式,既让信息即使传达又加强用户间的互动。但这个功能我一直没能成功启用过,这个周末想到了这个问题于是折腾了一下。

首先找对方法,我从一开始就死盯着Comment Reply Notification这个插件,而我的主题用的是iNove 1.4.6,不管怎么样,看上去在这个主题下Comment Reply Notification这个插件无效。真是背,这个问题上浪费了n个小时。

然后我找了另一个插件Mail To Commenter,简单配置一下就能用了,但是这个插件要求严格的回复格式,要么是’@+user+blank‘,要么’@+user+:‘,但我测试下来用户体验并不太好,简单的说,当你点了“回复”之后,鼠标的定位不准,这样会造成格式错误,就无法通过邮件回复对方了。具体如下图:

Chrome:

From Drop Box

Firefox:

From Drop Box

IE下的情况和Firefox相同,所以我怀疑是代码本身有问题,看了一下还真是。点击“回复”之后触发一个js,该文件在我的博客空间是位于WordPress所在目录下…/wp-content/themes/inove/js/comment.js ,大家可以做个参考,应该也在差不多的位置。文件开头一看就看出了毛病:

function() {

function reply(authorId, commentId, commentBox) {
var author = MGJS.$(authorId).innerHTML;
var insertStr = ‘<a href=”#’ + commentId + ‘”>@n‘ + author.replace(/t|n|rn/g, “”) + ‘ ‘;

appendReply(insertStr, commentBox);
}

关键就是在代码的红字加粗部分,在插入’@+user+blank’后又换行一次,删除后Firefox和IE下点击“回复”,鼠标就定位在了’@+user+blank’之后,功能一切正常。但Chrome下无论我怎么改,鼠标始终定位在最开始,浑然不理代码。我也不懂什么原因,想想难道是因为Chrome解释js和别人不一样?有牛人能指正就不生感激了。

总得来说这样也就基本够用了,但肯定也不完善,把格式钉死成’@+user+blank’或者’@+user+:’ 当然不好,有人就是喜欢@user后打回车怎么办呢?不过我对php和js都不精通,只能暂时维持这个样子了。

接下来又发生胸闷的事,测试时,有留言被回复确实是会给被回复者发信,但邮件打头是(Unknown sender) ,这当然也是个不能接受的结果。查了一下碰到的人不多,本来想通过代码解决,mail函数也找不到,放弃了。根据这篇文章,下载了wp mail from解决。测试一下也成功了,至此终于马马虎虎地搞定了留言回复的邮件通知功能,虽然写下来好像没什么实质内容,但其实经历了无数试错,太痛苦了。。。而且一个问题的解决伴随的是无数新问题的产生,我发现我代码一长就看不懂,个人域名邮箱也完全不会配,WordPress果然是个催人不断折腾的好工具啊,下次有心得了再来写。

8 thoughts on “几个关于WordPress里留言回复的邮件通知的问题

  1. 依云

    Chrome 那个问题是它默认将光标置于开头而不是末尾了,把光标移到末尾即可。
    假设 t 为 textarea 对象
    t.focus();
    var pos = t.value.length;
    if(t.setSelectionRange){
    t.setSelectionRange(pos, pos);
    }

    Reply
  2. T

    @依云 代码里确实有关于鼠标定位的,不过只有简单的一句field.focus();,我又不懂怎么改,只能作罢。晚点用你的先试试,唉,看着代码还是有些茫然啊。

    Reply
  3. T

    @浩子 你说哪一个?Comment Reply Notification 还是 Mail To Commenter?前者可能和主题有关吧,我只能这么理解了;后者你鼠标定位没问题?你Chrome什么版本?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>