@@ -15,6 +15,7 @@ class Kernel extends HttpKernel
1515{
1616 use HasEarlyBootstrappers;
1717 protected $ wpHandleHook =['template_redirect ' ,1 ];
18+ protected $ wpHandled =false ;
1819 /**
1920 * @var \WpStarter\Wordpress\Application
2021 */
@@ -51,24 +52,29 @@ public function handle($request, $processResponse=false)
5152 }
5253 }else {
5354 //Continue to run wp route stack
54- $ response= $ this ->handleWp ($ request ,$ response ,$ processResponse );
55+ $ response = $ this ->handleWp ($ request , $ response , $ processResponse );
5556 }
57+ //handle may be called multiple times, init:1 and wp_loaded:30
5658 return $ response ;
5759 }
5860
5961 function handleWp ($ request , $ response , $ processResponse =false ){
6062 if ($ processResponse ) {
6163 //Requested to process response, we run at target hook
62- $ this ->handleAndProcessWpAtTargetHook ($ request );
64+ $ this ->handleWpRouteAndResponse ($ request );
6365 }else {
6466 //No process return the response
6567 $ response =$ this ->handleWpRoute ($ request );
6668 }
6769 return $ response ;
6870 }
6971
70- function handleAndProcessWpAtTargetHook ($ request ): void
72+ protected function handleWpRouteAndResponse ($ request ): void
7173 {
74+ if ($ this ->wpHandled ){
75+ return ;
76+ }
77+ $ this ->wpHandled =true ;
7278 $ hook =(array )$ this ->wpHandleHook ;
7379 add_action ($ hook [0 ]??'template_redirect ' , function ()use ($ request ) {
7480 $ response =$ this ->handleWpRoute ($ request );
@@ -116,7 +122,7 @@ protected function wpSendRequestThroughRouter($request)
116122 ->then ($ this ->dispatchToWpRouter ());
117123 }
118124
119- function dispatchToWpRouter ($ route = null )
125+ protected function dispatchToWpRouter ($ route = null )
120126 {
121127 return function ($ request ) use ($ route ) {
122128 return $ this ->wpRouter ->dispatch ($ request );
0 commit comments