让WordPress评论时可以只写姓名不写邮箱

yyn查看全部>> 05-16

人气 102

亲们该页面内会员们分享的“作品”,版权为才华横溢的原作者们所有滴,不得商业使用!

作者: slyar

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

答案是肯定的。首先我们来分析一下评论提交时的php文件,位于Wordpress根目录下的wp-comments-post.php,看这一段:

if ( get_option('require_name_email') && !$user->ID ) {
if ( 6 > strlen($comment_author_email) || '' == $comment_author )
wp_die( __('Error: please fill the required fields (name, email).') );
elseif ( !is_email($comment_author_email))
wp_die( __('Error: please enter a valid email address.') );
}

以上文字转载自http://wordpress.org.cn/thread-18692-1-1.html

我们看到这是一段嵌套if判断,Wordpress首先判断后台的评论选项是否要求填写姓名和邮箱,如果要求,则先检查评论者的姓名和邮箱的长度(姓名不能为空,邮箱长度不能小于6);如果姓名为空或者邮箱长度小于6,则提示"Error: please fill therequiredfields (name, email)",若此项检查符合要求,那么继续检查邮箱是否符合格式,若格式不正确则提示"Error:pleaseenter a valid email address",若邮箱格式也符合要求,评论才会成功发出。

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

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

那么实现的代码为(我小小汉化了一下):

if ( get_option('require_name_email') && !$user->ID ) {
if ( '' == $comment_author )
wp_die(__('Slyar说:名字你都不写?想当火星人?'));
if ( "" != $comment_author_email) {
if ( !is_email($comment_author_email))
wp_die(__('Slyar说:拜托,要写邮箱写对成不?') );
}
}

在实际测试的时候发现还是会出现Alert错误提示,而php代码里没有Alert,那么应该是模板或者插件自带的判断,经过分析查找最后得到结论是"Wordpress Thread Comment"这个插件内部含有评论判断语句,修改的方法也大同小异,我就不说了。

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

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

标签
相关作品
让WordPress评论时可以只写姓名不写邮箱:等您坐沙发呢!



会员登陆还没有账号 立即注册

用户登录

忘记密码 ?

用第三方帐号直接登录

微博账号登陆 QQ账号登陆