Я пытаюсь загрузить профиль пользователя участника после получения данных из файла cookie, установленного www.myAuthSite.org.
Если имя пользователя из cookie еще не существует в таблице wp_users WordPress, тогда я вставляю необходимые данные пользователя в таблицу 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' );
Похоже, вы используете идентификатор пользователя из внешнего API напрямую. Можете ли вы проверить, совпадают ли эти идентификаторы пользователей? Не похоже, что вы передаете вновь созданный пользовательский идентификатор обратно во внешний источник аутентификации, чтобы они были синхронизированы, и это, вероятно, неосуществимо, поскольку каждая система должна иметь возможность устанавливать свои собственные идентификаторы.
Других решений пока нет …