Здесь я написал скрипт для входа и регистрации в WordPress программно
Создан ajax запрос на вход
add_action( 'wp_ajax_gs_user_login_action', 'gspre_user_login');
add_action( 'wp_ajax_nopriv_gs_user_login_action', 'gspre_user_login');
function gspre_user_login(){
$creds = array();
$username = $creds['user_login'] = $_POST['user_login'];
$creds['user_password'] = $_POST['user_pass'];
$userbyname = get_user_by( 'login', $username );
if ($userbyname) {
$user = $userbyname;
}
$userbyemail = get_user_by('email', $username);
if ($userbyemail) {
$user = $userbyemail;
}
if ($user) {
$user_roles = implode(', ', $user->roles);
$user = wp_signon( $creds, true );
if ( is_wp_error($user) ){
$myArr = array(
'response' => 'Invalide username and password',
'redirect_url' => '',
'message' => $user->get_error_message()
);
}else{
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID );
if ($user_roles == "administrator") {
$redirect_url = home_url('wp-admin/');
}else{
$redirect_url = home_url();
}
$myArr = array(
'response' => 'Login successfully',
'redirect_url' => $redirect_url,
'message' => 'Login successfully'
);
}
}else{
$myArr = array(
'response' => 'Invalide username and password',
'redirect_url' => '',
'message' => $user->get_error_message()
);
}
$myJSON = json_encode($myArr);
echo $myJSON;
die();
}
Создан ajax запрос на регистрацию
add_action( 'wp_ajax_gs_user_reg_action', 'gspre_user_reg');
add_action( 'wp_ajax_nopriv_gs_user_reg_action', 'gspre_user_reg');
function gspre_user_reg(){
//Create user
//start: Fill you details here
$user_login = $_POST['user_login'];
$user_email = $_POST['email'];
$user_pass = $_POST['password'];
$display_name = $_POST['display_name'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$role = 'administrator';
//end: Fill you details here
$flag_1 = 0;
$flag_2 = 0;
$check_username_exists = username_exists( $user_login );
if ($check_username_exists) {
$flag_1 = 1;
}
$check_email_exists = email_exists($user_email);
if ($check_email_exists) {
$flag_2 = 1;
}
if ($flag_1 == 0 && $flag_2 == 0) {
$userdata = array(
'user_login' => $user_login,
'user_pass' => $user_pass,
'user_email' => $user_email,
'display_name'=> $display_name,
'first_name' => $first_name,
'last_name' => $last_name
);
$user_id = wp_insert_user($userdata);
wp_update_user( array ('ID' => $user_id, 'role' => $role) );
if(is_wp_error($user_id)){
//echo $user->get_error_message();
$myArr = array(
'response' => 'register xyz',
'message' => $user->get_error_message()
);
}else{
//echo "User created successfully";
$myArr = array(
'response' => 'register xyz',
'message' => 'User created successfully'
);
}
}else{
//echo "User already exist";
$myArr = array(
'response' => 'register xyz',
'message' => 'User already exist'
);
}
$myJSON = json_encode($myArr);
echo $myJSON;
die();
}
Также, Создан шорткод для формы входа Shortcode :: [gsuserlogin]
add_shortcode('gsuserlogin', 'gsuserlogin_shortcode_function');
function gsuserlogin_shortcode_function(){
if (is_user_logged_in()) {
return 'You have Logged in';
}
?>
<form name="loginform" id="loginform" action="" method="post">
<div class="msg_ajax"></div>
<div>
<label for="gs_user_login"><?php echo _e('Username or Email', 'gs-users'); ?></label>
<input type="text" name="gs_user_login" id="gs_user_login" class="input" value="" size="20">
</div>
<div>
<label for="gs_user_pass"><?php echo _e('Password', 'gs-users'); ?></label>
<input type="password" name="gs_user_pass" id="gs_user_pass" class="input" value="" size="20">
</div>
<div>
<label><input name="gs_user_rememberme" type="checkbox" id="gs_user_rememberme" value="true"> <?php echo _e('Remember Me', 'gs-users'); ?></label>
</div>
<input type="hidden" name="action" value="gs_user_login_action">
<input type="button" id="login_btn" value="Login">
</form>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(document).on('click', '#login_btn', function(){
var target = jQuery(this);
var user_login = jQuery('#gs_user_login').val();
var user_pass = jQuery('#gs_user_pass').val();
//Ajax
jQuery.ajax({
url: '<?php echo admin_url( 'admin-ajax.php');?>',
type: "POST",
data: {'action': 'gs_user_login_action', user_login: user_login, user_pass: user_pass},
cache: false,
dataType: 'json',
beforeSend: function(){
},
complete: function(){
},
success: function (response) { console.log(response);
jQuery('.msg_ajax').text(response['message']);
console.log(response['redirect_url']);
console.log(response['message']);
if (response['redirect_url']!="") {
window.location.href = response['redirect_url'];
}
}
});
//Ajax
});
});
</script>
<?php
}
Создан шорткод для формы регистрации
Shortcode :: [gsuserreg]
add_shortcode('gsuserreg', 'gsuserreg_shortcode_function');
function gsuserreg_shortcode_function(){
if (is_user_logged_in()) {
return 'You have Logged in';
}
?>
<form name="regform" id="regform" action="" method="post">
<div class="msg_ajax"></div>
<div>
<label for="first_name"><?php echo _e('first_name', 'gs-users'); ?></label>
<input type="text" name="first_name" id="first_name">
</div>
<div>
<label for="last_name"><?php echo _e('last_name', 'gs-users'); ?></label>
<input type="text" name="last_name" id="last_name">
</div>
<div>
<label for="user_login"><?php echo _e('user_login', 'gs-users'); ?></label>
<input type="text" name="user_login" id="user_login">
</div>
<div>
<label for="email"><?php echo _e('email', 'gs-users'); ?></label>
<input type="text" name="email" id="email">
</div>
<div>
<label for="password"><?php echo _e('password', 'gs-users'); ?></label>
<input type="password" name="password" id="password">
</div>
<input type="hidden" name="action" value="gs_user_reg_action">
<input type="button" id="btn_reg" value="Send My Message">
</form>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(document).on('click', '#btn_reg', function(){
var target = jQuery(this);
var first_name = jQuery('#first_name').val();
var last_name = jQuery('#last_name').val();
var user_login = jQuery('#user_login').val();
var email = jQuery('#email').val();
var password = jQuery('#password').val();
//Ajax
jQuery.ajax({
url: '<?php echo admin_url( 'admin-ajax.php');?>',
type: "POST",
data: {'action': 'gs_user_reg_action', first_name: first_name, last_name: last_name, user_login: user_login, email: email, password: password},
cache: false,
dataType: 'json',
beforeSend: function(){
},
complete: function(){
},
success: function (response) { console.log(response);
jQuery('.msg_ajax').text(response['message']);
console.log(response['response']);
console.log(response['message']);
}
});
//Ajax
});
});
</script>
<?php
}
Вставьте приведенный выше код в функции темы. php Надеюсь, это сработает, спасибо вам:)