サイトA(ワードプレス)からサイトB(ワードプレス)にユーザーオブジェクトを送信しています。ここでサイトBがユーザーデータを受け入れると、ユーザーはサイトBにログインする必要があります。php curl requestで別のWordPressサイトにログインすることができません
ユーザーはサイトBにログインしていますが、is_user_logged_in()とwp_get_currect_userを使用してチェックしました。この時点ではまだURLはsiteA/wp-admin/admin-post
と表示されています。しかしその後、私はサイトBにリダイレクトする必要があり、ユーザーはログインする必要があります。これは私が失敗する部分です。 javascriptのハックを使用してサイトBにリダイレクトしても、リダイレクトは機能しますが、ユーザーはログインしていません。 私のカールの要求を確認してください。
サイトA
$opts = array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => false,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'from-site-a',
CURLOPT_SSL_VERIFYPEER => False,
CURLOPT_HTTPHEADER => array('Accept: application/json'),
CURLOPT_POST => 1,
// CURLOPT_HEADER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => http_build_query($user),
CURLOPT_URL => $url
);
$ch = curl_init();
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
サイトB
$user = $_POST;
$a = get_user_by('login', $user['data']['user_login']);
wp_set_current_user($a->data->ID);
wp_set_auth_cookie($a->data->ID);
do_action('wp_login', $a->data->user_login, $a);
//wp_get_current_user();
$string = '<script type="text/javascript">';
$string .= 'window.location = "' . site_url() . '"';
$string .= '</script>';
echo $string;
exit;