User Login Programmatically in WordPress

User Login Programmatically in WordPress

Custom JS code enqueued in active theme functions.php

var userdata = { 
                  'action'   : 'signin_member', 
                  'username' : jQuery('#user_name').val(),
                  'password' : jQuery('#password').val()
                 };
  jQuery.ajax({
      url    : yup.ajaxurl,
      type   : 'POST',
      data   : userdata,
          beforeSend: function() {
          },
          success: function(response) {      
              responseobj = jQuery.parseJSON(response);
              if (responseobj['flag'] == 'success') {
                  jQuery('#message').text(responseobj['message']);
              }
              if( '' != responseobj['redirecturl'] ){
                  
                  window.location.href = responseobj['redirecturl'];
              }
          }
  });
});

Code to be added on active themes functions.php

add_action('wp_ajax_signin_member','signin_member_callback');
add_action('wp_ajax_nopriv_signin_member','signin_member_callback');
function signin_member_callback(){
	if(trim($_POST["username"] == '' )  || trim($_POST["password"] == '' )  ){
		echo json_encode(array('flag'=>'failure','message'=> 'Please enter both username and password.' ));
	}else
	{
		$user_login     = esc_attr($_POST["username"]);
		$user_password  = esc_attr($_POST["password"]);
		$creds = array();
		$creds['user_login']    = $user_login;
		$creds['user_password'] = $user_password;
		$creds['remember']      = true;
		$user = wp_signon( $creds, false );
		$userID = $user->ID;
		
		wp_set_current_user( $userID, $user_login );
		wp_set_auth_cookie( $userID, true, false );
		do_action( 'wp_login', $user_login );
	    if (is_wp_error($user) ) {
	 		echo json_encode(array('flag'=>'failure','message'=> 'Invalid username or password.' ));
	       	die();
	    } else {
	        wp_set_auth_cookie( $user->ID, 0, 0);
	        echo json_encode(array('flag' => 'success','message' => 'Logged in sucessfully','redirecturl' => get_field('community_page','option') ));
	        die();
	  	}
		  	
	}
}

screen46

screen47

Leave a Reply

Your email address will not be published. Required fields are marked *