之前我还不知道,今天回复《竞猜世界杯得奖名单》获奖的朋友时,风逐蓝天反应我发过去的默认邮箱是no-reply@开头。后来我自己测试后,还真的是,因为我之前用Comment Reply Notification插件的时候,只是测试了里面内容是否正确,还真没遇见过这个问题,所以今天就去Google找方法解决。
无意中看见这样一篇文章《修正WP mail to commenter插件发件人Email地址及名称》,虽然他是介绍WP mail to commenter这款插件,但是我还是往下面看了。结果让我惊喜的是,他很详细的介绍了解决这个问题的想法,我打开Comment Reply Notification插件文件夹里面的comment-reply-notification.php文件来傻看,没想到让我看出头绪来了^_^
218句有这样一段代码:
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
这里的’no-reply@’不正是上面提到的“no-reply@”么?我就直接改成我的邮箱前缀
$wp_email = 'u@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
没想到测试就成功了,哈哈
这个问题解决后,我又想到另外一个问题,就是之前在博客里面放了表情,留言通过邮件发到别人邮箱里,自动变成符号,而不是表情图片,这让我郁闷很久。直到看见阿修回复我的留言发邮件,他里面的内容就是原封不动的表情,我就请教了他,才知道万戈写过这样一篇文章《将 WordPress 中的表情符号转化为图片》。我也研究了好半天,因为我不会PHP代码,所以看着那个comment-reply-notification.php文件很头痛。又顺着万戈的文章看到《Ajax comments 評論回應郵件通知》,知道大概是“$message = (邮件内容);在后面添加一行:$message = convert_smilies($message);”,我就继续研究comment-reply-notification.php,终于被我发现了解决的方法,其实很简单,就是用convert_smilies()函数将输出带有表情代码的内容转换一下成图片,方法如下:
找到225行代码:
$mail_message = apply_filters('comment_notification_text', $mail_message, $id);
回车,在下面加上一句:
$mail_message = convert_smilies($mail_message);
搞定:
万戈在文章里面也提到侧边栏里面的“最新评论”,也是显示代码,而非表情。其实我博客也是一样的情况,所以就打开sidebar.php继续研究“最新评论”相关代码。
其实那段代码我真的不是看得很懂,只知道上面是mysql查询,下面是foreach循环出结果。还好我有asp.net的一点基础,大多数语言的原理都差不多,只是表达的方式不一样而已。下面是解决方法:
很多人用的“最新评论”应该是这段代码吧(除了HTML代码不一样,其他代码应该都一样)
comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = '' AND comment_author_email != '$my_email'
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n
- ";
foreach ($comments as $comment) {
$output .= "\n
- ".strip_tags($comment->comment_author).":" . "ID) . "#comment-" . $comment->comment_ID . "\" title=\"插入 " . $comment->post_title . "\">" . strip_tags($comment->com_excerpt) ." "; } $output .= "\n
其实很简单,和上面一下,把输出内容用convert_smilies()函数转换一下,找到
strip_tags($comment->com_excerpt)
改成
convert_smilies(strip_tags($comment->com_excerpt))
效果如图:
是不是很简单呢?两个问题的解决方法都是一个函数而已。为了解决以上三个问题,总共加上发这篇文章,花了我三个多小时,或许我是解决问题很慢的吧,但是我基本没问任何人方法,都是找类似文章研究然后慢慢思考出来的。所以也希望大家如果遇见困难,多转动自己的脑子,多问搜索引擎,实在解决不了,再问下别人,其实有了思路,什么都好解决的。
最后赞赏一下上面两篇帮助我的文章作者“豬頭六”和“万戈”,虽然他们写的文章都不能直接帮我解决问题,但是他们在文章里描述了实现问题的思路,这点是非常重要的,其实那两篇文章我能复制的代码,几乎没有。