$uid = (int) ($_GET['uid'] ?? 0); $token = sanitize_text_field($_GET['token'] ?? ''); $user = get_user_by('ID', $uid); if (!$user || ! jpn_verify_password_reset_token($uid, $token)) { wp_die('リンクが無効または期限切れです。'); } if (isset($_POST['jpn_reset_password'])) { $pw = $_POST['new_password']; $pw2 = $_POST['new_password_confirm']; if ($pw !== $pw2) { $error = 'パスワードが一致しません。'; } elseif (! jpn_password_policy_validate($pw, $reason)) { $error = $reason; } else { wp_set_password($pw, $uid); delete_user_meta($uid, '_jpn_pw_reset_token'); delete_user_meta($uid, '_jpn_pw_reset_time'); wp_safe_redirect( add_query_arg(['open_login'=>1,'password_reset'=>1], home_url('/login/')) ); exit; } }