我有问题。此代码创建用于更改WP用户密码和用户显示名称。我的代码正在我的本地主机上工作但相同的代码不能正常工作。我的代码有什么问题?总是显示错误!
function pass_change_form()
{
global $wpdb;
$user_email = $_POST["user_email"];
$full_name = $_POST["full_name"];
$password = $_POST["password"];
$re_password = $_POST["re_password"];
$results = $wpdb->get_results("SELECT * FROM wp_users WHERE user_email = '$user_email'");
//var_dump($results);
$id = $results[0]->ID;
$user_login = $results[0]->user_login;
$user_email = $results[0]->user_email;
if(empty($re_password)){
$user_data = wp_update_user( array(
'ID' => $id,
'user_login' => $user_login,
'user_email' => $user_email,
'display_name' => $full_name ) );
if ( is_wp_error( $user_data ) ) {
echo 'Error';
} else {
echo 1;
}
}
else{
$user_data = wp_update_user( array(
'ID' => $id,
'user_login' => $user_login,
'user_email' => $user_email,
'user_pass' => $re_password,
'display_name' => $full_name ) );
if ( is_wp_error( $user_data ) ) {
echo 'Error';
} else {
echo 0;
}
}
die;
}
add_action( 'wp_ajax_pass_change_form', 'pass_change_form' );
add_action('wp_ajax_nopriv_pass_change_form', 'pass_change_form');
答案 0 :(得分:0)
正如Berend de Groot在上面的评论中提到的那样,为什么要重写密码更改流程? WP内置了一个可以为您完成此功能的功能。有关如何使用该信息的信息,请参阅wp_set_password()
https://codex.wordpress.org/Function_Reference/wp_set_password。
至于你的代码,下面将完全相同,只是重写为更清洁并使用已有的功能。
function pass_change_form() {
$user_email = $_POST["user_email"];
$password = $_POST["password"];
$re_password = $_POST["re_password"];
$user = get_user_by('email', $user_email);
// Why use empty() to check a string? Is 're_password' an array?
if($user && !empty($re_password)) {
wp_set_password($re_password, $user->ID);
}
die;
}
add_action( 'wp_ajax_pass_change_form', 'pass_change_form' );
add_action('wp_ajax_nopriv_pass_change_form', 'pass_change_form');