让WordPress评论时可以只写姓名不写邮箱(转载)

  • 内容
  • 评论
  • 相关

转载自:http://www.slyar.com/blog/wordpress-only-name.html

WordPress的评论默认有2种方式,一种是姓名和邮箱全写,另一种是姓名和邮箱全不写。全写吧,很多访客都没有邮箱或者不喜欢写邮箱,这样就导致评论减少;全不写吧,又会有很多垃圾评论。。。这时有人提出:能不能让访客必写姓名又可以不写邮箱呢?

答案是肯定的。首先我们来分析一下评论提交时的php文件,位于Wordpress根目录下的wp-comments-post.php,看这一段:
[code lang="js"]
if ( get<em>option('require</em>name<em>email') &amp;&amp; !$user-&gt;ID ) {
if ( 6 &gt; strlen($comment</em>author<em>email) || '' == $comment</em>author )
wp<em>die( ('Error: please fill the required fields (name, email).') );
elseif ( !is<em>email($comment</em>author<em>email))
wp</em>die( _</em>('Error: please enter a valid email address.') );
}
[/code]
我们看到这是一段嵌套if判断,Wordpress首先判断后台的评论选项是否要求填写姓名和邮箱,如果要求,则先检查评论者的姓名和邮箱的长度(姓名不能为空,邮箱长度不能小于6);如果姓名为空或者邮箱长度小于6,则提示"Error: please fill the required fields (name, email)",若此项检查符合要求,那么继续检查邮箱是否符合格式,若格式不正确则提示"Error: please enter a valid email address",若邮箱格式也符合要求,评论才会成功发出。

一开始为了简单,就把第二个if判断删除了,试验后发现不可行。。。换思路。。。

因为它是嵌套if,所以必须二个条件都符合才行,那么我们可以将其中一个嵌套提出来单独判断。最后的判断方式是:首先判断姓名是否为空,若为空则弹出错误提示,不为空继续检查邮箱地址,如果邮箱地址为空则继续,不为空则判断邮箱地址格式是否正确,格式不正确弹出错误提示,格式正确则完成评论。

那么实现的代码为(我小小汉化了一下):
[code lang="js"]
if ( get<em>option('require</em>name<em>email') &amp;&amp; !$user-&gt;ID ) {
if ( '' == $comment</em>author )
wp<em>die(<strong>('Slyar说:名字你都不写?想当火星人?'));
if ( "" != $comment</strong></em>author<em>email) {
if ( !is</em>email($comment<em>author</em>email))
wp_die(('Slyar说:拜托,要写邮箱写对成不?') );
}
}
[/code]
在实际测试的时候发现还是会出现Alert错误提示,而php代码里没有Alert,那么应该是模板或者插件自带的判断,经过分析查找最后得到结论是"Wordpress Thread Comment"这个插件内部含有评论判断语句,修改的方法也大同小异,我就不说了。

如果没有插件干扰,那么经过修改就可以成功实现Wordpress评论时只写姓名不写邮箱了。

PS.要使用这个功能,后台设置-评论中的"评论者必须输入姓名及电子邮箱"一定要打钩!

评论

2条评论
  1. Gravatar 头像

    freddy 回复

    您好。

    我尝试根据您的方法进行修改,但在wp-comments-post.php里没有找到这个信息。
    能否求教一下。
    谢谢。

  2. Gravatar 头像

    yzc363 回复

    不错学习了,谢谢分享!

发表评论

电子邮件地址不会被公开。 必填项已用*标注