我更改了默认的注册选项,允许用户使用其电子邮件地址注册。他们还可以选择添加自己的名字和姓氏,但这不是必需的。
// Allow email instead of nickname for login
add_filter(\'authenticate\', function($user, $email, $password){
//Check for empty fields
if(empty($email) || empty ($password)){
//create new error object and add errors to it.
$error = new WP_Error();
if(empty($email)){ //No email
$error->add(\'empty_username\', __(\'<strong>Viga</strong>: Unustasid sisestada e-posti aadressi\'));
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
$error->add(\'invalid_username\', __(\'<strong>Viga</strong>: E-posti aadress on vale.\'));
}
if(empty($password)){ //No password
$error->add(\'empty_password\', __(\'<strong>Viga</strong>: Unustasid sisestada parooli\'));
}
return $error;
}
//Check if user exists in WordPress database
$user = get_user_by(\'email\', $email);
//bad email
if(!$user){
$error = new WP_Error();
$error->add(\'invalid\', __(\'<strong>Viga</strong>: E-posti aadress või parool ei ole õige.\'));
return $error;
}
else{ //check password
if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password
$error = new WP_Error();
$error->add(\'invalid\', __(\'<strong>Viga</strong>: E-posti aadress või parool ei ole õige.\'));
return $error;
}else{
return $user; //passed
}
}
}, 20, 3);
但这带来了一个问题。在“作者”页面上,用户的电子邮件地址变为公共地址:
http://example.com/author/email-address/
我知道如何更改URL的/作者/部分:
add_action(\'init\', \'cng_author_base\');
function cng_author_base() {
global $wp_rewrite;
$author_slug = \'autor\'; // change slug name
$wp_rewrite->author_base = $author_slug;
}
但不是如何更改用户名以显示作者的ID。能做到吗?
SO网友:amarinediary
需要记住的是,作者的查询可能会变得真正可预测。正在添加+1
这不难吗。可能会出现来自机器人的滥用,例如通过Puppeter检索数据。
我们可以将user_registered
通过消毒。我们将得到一个很好的随机数字串,这将积极防止机器人和用户跳过页面。
我们可以在注册时捕获用户ID,然后更新user_nicename
具有所需的值。
add_action( \'user_register\', \'wpso208792\' );
function wpso208792( $user_id ) {
$userdata = array (
\'ID\' => $user_id,
\'user_nicename\' => sanitize_title_with_dashes( $user_id . str_replace ( array( \'-\', \' \', \':\', ), \'\', get_userdata( $user_id )->user_registered ) ),
);
wp_update_user( $userdata );
};
如果你不想让用户随机化
user_nicename
只需删除
. str_replace ( array( \'-\', \' \', \':\', ), \'\', get_userdata( $user_id )->user_registered )
从值。