0

www.my Auth Site.orgによって設定された Cookie からデータを取得した後、寄稿者のユーザー プロファイルを読み込もうとしています。Cookie からのユーザー名が Wordpress の wp_users テーブルにまだ存在しない場合、必要なユーザー データを wp_users テーブルに挿入しますが、ユーザー名が既に存在する場合は、現在のユーザー ダッシュボードをロードして、サイトに新しい記事を投稿できるようにします。http://www.mysiteurl.org/wp-login.phpを使用してログインするときに実行できます。

しかし、http://www.mysiteurl.org/wp-admin/post-new.php にリダイレクトすると、再び wp-login.php にリダイレクトされ、最終的にhttp://myAuthsite.orgにリダイレクトされます。 (つまり、その他の部分)

以下は、functions.php ファイルに記述したコードです。

function redirect_login_page(){
$page_viewed = basename( $_SERVER['REQUEST_URI'] );
global $user;
$temp = getLoggedIn(); // to check if cookie exist by using custom getLoggedIn() 
if( $page_viewed== "wp-login.php" && isset( $temp )  ) {  // if user wants to login and cookie is set 
    $myusername=getLoggedIn();   //get username details from cookie

    // to check if user already exist in wp_users table 
    $response = wp_remote_get( "http://www.mysiteurl.org/demo.php?user=$myusername" );  
    $ext_auth = json_decode( $response['body'], true );
    if( $ext_auth['result']  == 0 ) {  //if cookie user does not already exist  
        /*
        some of my required code
        ......
        */
        $userdata = array(
            'user_email'=> $myuseremail,                                                
            'user_login' => $myusername,
            'user_nicename' => $myusername,
            'user_pass'=> $myuserpassword
        );
        $new_user_id = wp_insert_user( $userdata ); // A new user has been created with details from cookie
        // Load the new user info
        $user = new WP_User ($new_user_id);
    } else if( $ext_auth['result'] == 1 ) {
        // External user already exist, try to load the user info from the WordPress wp_users table
        $user = new WP_User ($ext_auth['id']);
    }
    $temppassword="password from wp_users table"; // 
    $creds = array();
    $creds['user_login'] = $myusername;
    $creds['user_password'] = $temppassword;
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );
    wp_set_current_user($user->ID);
    if ( is_wp_error($user) )
        echo $user->get_error_message();
    //wp_redirect('http//www.mysiteurl.org/wp-admin/profile.php');
    //NOW $user has all details of current user
    // But if I am redirecting it to dashboard, then instead of loading user profile it is getting redirected to wp-login.php 
    exit();
} //eoif
else{  //if cookie is not set redirect to auth to login and set cookie
    wp_redirect('http://www.myAuthsite.org')
}
}
    add_action( 'init','redirect_login_page' );
4

1 に答える 1

1

外部 API からのユーザー ID を直接使用しているようです。これらのユーザー ID が同じであることを確認できますか? 新しく作成したユーザーIDを外部認証ソースに渡して同期させるようには見えません。また、各システムが独自のIDを設定できる必要があるため、これはおそらく実行可能ではありません。

于 2016-06-24T14:45:32.900 に答える