Wordpress / BuddyPress注册中的自定义电子邮件验证

时间:2014-07-08 04:39:01

标签: wordpress validation buddypress

我正在使用WordPress和BuddyPress创建网站。注册应该通过.edu电子邮件地址向所有人开放。

如果我使用的是vanilla WordPress,使用registration_errors过滤器可以非常简单,但是在安装BuddyPress时这不起作用。过滤器似乎永远不会被调用。如果我停用BuddyPress,它可以正常工作。

从我读过的内容来看,虽然BuddyPress确实有超出WordPress默认值的额外个人资料字段的自定义验证挂钩,但你应该使用标准的WordPress挂钩来处理用户名和电子邮件地址等事情。

有没有人遇到过这个问题?我应该使用另一个过滤器或挂钩吗?

2 个答案:

答案 0 :(得分:0)

看一看 buddypress \ bp-members \ bp-members-screens.php~L。 49

也许这个钩子? do_action( 'bp_signup_pre_validate' );

或者看看 buddypress \ bp-members \ bp-members-functions.php~L。 1347

也许这个过滤器? apply_filters( 'bp_core_validate_user_signup', $result );

答案 1 :(得分:-1)

正确的挂钩是bp_signup_validate。钩子函数不传递任何参数,但我可以访问全局$ bp对象并修改它以添加自定义电子邮件验证和错误消息:

function validate_email_edu(){

    global $bp;

    $email = $bp->signup->email;

    if ($email){

        $tld_index = strrpos($email,'.');
        $tld = substr($email,$tld_index);

        if ($tld != '.edu'){
            $bp->signup->errors['signup_email'] = 'Sorry, you must have a .edu email address to register.';
        }

    }

}

add_action('bp_signup_validate','validate_email_edu');