// 添加一个自定义的登录按钮到登录页面
function add_wechat_login_button() {
if (is_user_logged_in()) {
return;
}
$redirect_uri = urlencode(wp_login_url());
$wechat_login_url = "https://open.weixin.qq.com/connect/qrconnect?appid={YOUR_APP_ID}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_login";
echo '<
a
href
=
"' . $wechat_login_url . '"
class
=
"wechat-login-button"
>' . __('微信登录', 'text-domain') . '</
a
>';
}
add_action('login_form', 'add_wechat_login_button');
// 处理微信登录回调
function handle_wechat_login() {
if (isset($_GET['code'])) {
$code = $_GET['code'];
// 使用code换取access_token和openid
$access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={YOUR_APP_ID}&secret={YOUR_APP_SECRET}&code={$code}&grant_type=authorization_code";
$access_token_response = wp_remote_get($access_token_url);
$access_token_data = json_decode(wp_remote_retrieve_body($access_token_response), true);
if (isset($access_token_data['access_token'])) {
$access_token = $access_token_data['access_token'];
$openid = $access_token_data['openid'];
// 获取用户信息
$user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}";
$user_info_response = wp_remote_get($user_info_url);
$user_info_data = json_decode(wp_remote_retrieve_body($user_info_response), true);
if (isset($user_info_data['nickname'])) {
$nickname = $user_info_data['nickname'];
$user_email = $openid . '@wechat.com';
// 检查用户是否已经存在
$user = get_user_by('email', $user_email);
if (!$user) {
// 创建新用户
$random_password = wp_generate_password();
$user_id = wp_create_user($user_email, $random_password, $user_email);
$user = get_user_by('id', $user_id);
}
// 自动登录用户
wp_set_auth_cookie($user->ID, true);
// 重定向到首页
wp_redirect(home_url());
exit;
}
}
}
}
add_action('init', 'handle_wechat_login');