主机格调

之前我还不知道,今天回复《竞猜世界杯得奖名单》获奖的朋友时,风逐蓝天反应我发过去的默认邮箱是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代码不一样,其他代码应该都一样)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$my_email = get_bloginfo ('admin_email');
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_author_email, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,35) AS com_excerpt
FROM $wpdb->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<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author).":" . "<a href=\"" . get_permalink($comment->ID) .	"#comment-" . $comment->comment_ID . "\" title=\"插入 " . $comment->post_title . "\">" . strip_tags($comment->com_excerpt)	."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?>

其实很简单,和上面一下,把输出内容用convert_smilies()函数转换一下,找到

strip_tags($comment->com_excerpt)

改成

convert_smilies(strip_tags($comment->com_excerpt))

效果如图:

最新评论表情图片

是不是很简单呢?两个问题的解决方法都是一个函数而已。为了解决以上三个问题,总共加上发这篇文章,花了我三个多小时,或许我是解决问题很慢的吧,但是我基本没问任何人方法,都是找类似文章研究然后慢慢思考出来的。所以也希望大家如果遇见困难,多转动自己的脑子,多问搜索引擎,实在解决不了,再问下别人,其实有了思路,什么都好解决的。

最后赞赏一下上面两篇帮助我的文章作者“豬頭六”和“万戈”,虽然他们写的文章都不能直接帮我解决问题,但是他们在文章里描述了实现问题的思路,这点是非常重要的,其实那两篇文章我能复制的代码,几乎没有。

>>原创文章,欢迎转载。转载请注明:转载自西门的后花园,谢谢!
>>原文链接地址:http://ons.me/132.html