更精确的问题:如何覆盖email_exists
通过get_user_by
?
我已选择从数据库中呈现不可用/不可读的电子邮件地址。
在向管理员和用户(用户注册)发送电子邮件后,我向电子邮件地址添加了一些元素(字符),然后我必须删除这些添加的元素,以验证电子邮件是否存在,是否显示在用户帐户上,是否用于邮件列表。
要解密电子邮件,我必须使用substr
关联值的位置$email
字段get_user_by
删除之前添加的元素。我读到了email_exists
使用get_user_by
这是一个可插入功能。但我不知道如何使用get_user_by
在…内email_exists
.
有可能吗?我该怎么办?
function get_user_by( $field, $db_email ) {
$field = \'email\';
//function to decrypt my email from database
$ex = preg_split(\'\\\'@\\\'\', $nr , -1);
$dem = substr(substr($ex[0],2),0,-2);
$rdem = substr($dem,0,2).substr($dem,2+1,strlen($dem)-2);
$db_email = $rdem. \'@\' .$ex[1];
$userdata = WP_User::get_data_by( \'email\', $db_email );
if ( ! $userdata ) {
return false;
}
$user = new WP_User;
$user->init( $userdata );
return $user;
}
function email_exists( $email ) {
$user = get_user_by( $field, $db_email );
if ( $user ) {
$user_id = $user->ID;
} else {
$user_id = false;
}
return apply_filters( \'email_exists\', $user_id, $email );
}
if (email_exists($email)){
lq_errors()->add("emailexists","This email address already exist");
}
SO网友:butlerblog
根据您的代码,我认为问题可能是您检查了一个未定义的变量。你在检查$db_email
, 它在函数中是一个未定义的值,因此您将查找一个空结果。您需要检查传递给的值email_exists()
(这将是表单中正在验证的电子邮件)。
如果您的可插拔get_user_by()
函数的结果相当于您如何混淆电子邮件,如果电子邮件存在,那么您应该得到正确的匹配。
function email_exists( $email ) {
// You had this as checking $db_email, which would have been
// undefined. It should be checking for the value passed to
// this function - $email.
$user = get_user_by( \'email\', $email );
if ( $user ) {
$user_id = $user->ID;
} else {
$user_id = false;
}
return apply_filters( \'email_exists\', $user_id, $email );
}