URL-Rewrite vor template_redirect aufgerufen

Logik

  • Ich habe eine Seitenvorlage unter /blog , die einen “öffentlichen” Blog enthält.
  • Ich habe eine Seitenvorlage bei /members , die Mitgliederbereich ist.

Wenn ein Benutzer die URL /members/blog eingibt, möchte ich dies im template_redirect Hook abfangen und eine benutzerdefinierte Vorlage laden, die einen “privaten” Blog anzeigt

Problem

Bevor template_redirect aufgerufen wird /members/blog wird in /members/blog neu geschrieben, sodass ich die private Blog-Seite nicht laden kann.

Es gibt nichts in den Rewrite-Regeln, das das sagt.

Solutions Collecting From Web of "URL-Rewrite vor template_redirect aufgerufen"

Also das Problem war, dass redirect_guess_404_permalink einen Fehler 404 erkannt hat und “erraten” /members/blog zu sein /blog

Meine hacky Lösung war, in die Statuserrorsüberprüfung einzuhaken ( WordPress von “Raten” Umleitungen für nicht vorhandene URLs zu stoppen ) und wenn URL-Teile zusammenpassen, dann triggerse die erratene Lösung

 function blog_no_redirect_guess_404_permalink( $header ){ global $wp_query; if( is_404() ) { // Get Request URL Parts $url = parse_url($_SERVER['REQUEST_URI']); $path = explode('/', $url['path']); $path = array_filter($path); $path = array_merge($path, array()); // If matches /members/blog then unset 'guess' if (strtolower($path[0]) == 'members' && strtolower($path[1]) == 'blog') { unset( $wp_query->query_vars['name'] ); } } return $header; } add_filter( 'status_header', 'blog_no_redirect_guess_404_permalink' );