From 0076a678896b7f558091d289e613a62e569d9ee4 Mon Sep 17 00:00:00 2001 From: QWp6t Date: Mon, 5 Feb 2024 18:43:28 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A9=20add=20experimental=20flag=20for?= =?UTF-8?q?=20WordPress=20request=20handler=20(#348)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Roots/Acorn/Bootloader.php | 52 ++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/src/Roots/Acorn/Bootloader.php b/src/Roots/Acorn/Bootloader.php index ea72052a..6a3a7f7f 100644 --- a/src/Roots/Acorn/Bootloader.php +++ b/src/Roots/Acorn/Bootloader.php @@ -214,10 +214,19 @@ protected function bootHttp(ApplicationContract $app) /** @var \Illuminate\Routing\Route $route */ $route = $app->make('router')->getRoutes()->match($request); - /** @var array $config */ - $config = $app->config->get('router.wordpress', ['web' => 'web', 'api' => 'api']); + if ($route->getName() !== 'wordpress_request') { + $this->registerRequestHandler($kernel, $request, $route); + } elseif (env('ACORN_ENABLE_EXPERIMENTAL_WORDPRESS_REQUEST_HANDLER', false)) { + $this->registerWordPressRequestHandler($kernel, $request, $route, $app->config->get('router.wordpress', ['web' => 'web', 'api' => 'api'])); + } - $this->registerRequestHandler($kernel, $request, $route, $config); + add_filter('do_parse_request', function ($doParse, \WP $wp, $extraQueryVars) use ($route) { + if ($route->getName() === 'wordpress_request') { + return $doParse; + } + + return apply_filters('acorn/router/do_parse_request', $doParse, $wp, $extraQueryVars); + }, 100, 3); } /** @@ -228,7 +237,8 @@ protected function bootHttp(ApplicationContract $app) protected function registerWordPressRoute(ApplicationContract $app) { $app->make('router') - ->any('{any?}', fn () => tap(response(''), function (Response $response) { + ->any('{any?}', fn () => tap(response(''), function (Response $response) use ($app) { + dd('eloel'); foreach (headers_list() as $header) { [$header, $value] = explode(': ', $header, 2); if (! headers_sent()) { @@ -237,6 +247,10 @@ protected function registerWordPressRoute(ApplicationContract $app) $response->header($header, $value); } + if ($app->hasDebugModeEnabled()) { + $response->header('X-Powered-By', $app->version()); + } + $content = ''; $levels = ob_get_level(); @@ -256,6 +270,22 @@ protected function registerWordPressRoute(ApplicationContract $app) * @return void */ protected function registerRequestHandler( + \Illuminate\Contracts\Http\Kernel $kernel, + \Illuminate\Http\Request $request, + ?\Illuminate\Routing\Route $route + ) { + add_filter('do_parse_request', function ($doParse, \WP $wp, $extraQueryVars) use ($route) { + if (! $route) { + return $doParse; + } + + return apply_filters('acorn/router/do_parse_request', $doParse, $wp, $extraQueryVars); + }, 100, 3); + + add_action('parse_request', fn () => $this->handleRequest($kernel, $request)); + } + + protected function registerWordPressRequestHandler( \Illuminate\Contracts\Http\Kernel $kernel, \Illuminate\Http\Request $request, ?\Illuminate\Routing\Route $route, @@ -274,20 +304,6 @@ protected function registerRequestHandler( return; // Let WordPress handle these requests } - add_filter('do_parse_request', function ($doParse, \WP $wp, $extraQueryVars) use ($route) { - if (! $route) { - return $doParse; - } - - return apply_filters('acorn/router/do_parse_request', $doParse, $wp, $extraQueryVars); - }, 100, 3); - - if ($route->getName() !== 'wordpress_request') { - add_action('parse_request', fn () => $this->handleRequest($kernel, $request)); - - return; - } - $route->middleware(preg_match('/^wp-json(\/.*)?/', $request->path()) ? $config['api'] : $config['web']); ob_start();