我正在使用WordPress和BuddyPress创建网站。注册应该通过.edu电子邮件地址向所有人开放。
如果我使用的是vanilla WordPress,使用registration_errors
过滤器可以非常简单,但是在安装BuddyPress时这不起作用。过滤器似乎永远不会被调用。如果我停用BuddyPress,它可以正常工作。
从我读过的内容来看,虽然BuddyPress确实有超出WordPress默认值的额外个人资料字段的自定义验证挂钩,但你应该使用标准的WordPress挂钩来处理用户名和电子邮件地址等事情。
有没有人遇到过这个问题?我应该使用另一个过滤器或挂钩吗?
答案 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');