2 ответа

  1. наиболее очевидной проблемой может быть

    <div id="loginbar">
    
    <?php   $current_user = wp_get_current_user();
            if(isset($_POST["submit"])){        
            custom_login();
            }?>
    

    Функция login будет загружать новую страницу, что php не может сделать, как только есть данные, выведенные на страницу, у вас есть 1 div выше функции, и я предполагаю, что ваш вывод заголовка, а также.

    Попробуйте использовать из файла функций (тема или плагин) и использовать крюк init:

    function cust_log(){
            $current_user = wp_get_current_user();
            if(isset($_POST["submit"])){        
            custom_login();
    }
    add_action('init', 'cust_log');
    
  2. Я решил функцию wp_signon () для «Первый раз нет ошибки loggedIn», поэтому вы просто вызываете функцию set_current_user ($user_verify->ID) ниже функции wp_signon() :

    require('wp-load.php'); 
    $err = '';
    $success = '';
    global $wpdb,$current_user;
        $response = array();
        $data = json_decode(file_get_contents("php://input"));
    
        $email    = $data->email_id;
        $password = $data->password;
        $username = $wpdb->escape($email);
        $password = $wpdb->escape($password);
        $remember = true;
        if($remember) $remember = "true";
        else $remember = "false";
        $login_data = array();
        $login_data['user_login'] = $username;
        $login_data['user_password'] = $password;
        $login_data['remember'] = $remember;
    
        $user_verify = wp_signon( $login_data, false ); 
        set_current_user($user_verify->ID);
        if (is_user_logged_in()) 
        {
            get_currentuserinfo();
    
                $response['user_id']=$user_verify->ID;
                $response['first_name']=$current_user->user_firstname ;
                $response['last_name']=$current_user->user_lastname;
                $response['email']=$current_user->user_email;
          $status="success";
          $msg="";
        } else {    
          $status="failed";
          $msg="Invalid Credential.";
         }