/** * ロリポップCGI環境でREST API認証を有効にするワークアラウンド * Authorizationヘッダーが届かないため、カスタムヘッダーで代替する */ add_filter('determine_current_user', function ($user_id) { if ($user_id) return $user_id; // X-WP-Auth ヘッダーから認証情報を取得 $auth = ''; if (isset($_SERVER['HTTP_X_WP_AUTH'])) { $auth = $_SERVER['HTTP_X_WP_AUTH']; } elseif (function_exists('getallheaders')) { $headers = getallheaders(); $auth = $headers['X-WP-Auth'] ?? ($headers['x-wp-auth'] ?? ''); } if (!$auth || stripos($auth, 'Basic ') !== 0) return $user_id; $decoded = base64_decode(substr($auth, 6)); if (!$decoded || strpos($decoded, ':') === false) return $user_id; list($username, $password) = explode(':', $decoded, 2); $user = wp_authenticate_application_password(null, $username, $password); if (is_wp_error($user)) return $user_id; return $user->ID; }, 20);