Viele Parameter / Regeln neu schreiben

Ich habe eine Bibelseite, die page_id von 135 ist, und ich versuche, mehrere WordPress-Umschreibungsregeln zu erstellen. Ich versuche, etwas wie eines der folgenden zu erhalten:

  • Webseite / Bibel / Nasb
  • Webseite / Bibel / Nasb / Genesis
  • website / bibel / nasb / Genesis / 1

Ich möchte über die function get_query_var () von WordPress auf die Abfrageparameter zugreifen können. Alle Parameter scheinen jedoch in get_query_var (‘version’) gespeichert zu sein. Sie werden nicht in 3 verschiedene Parameter aufgeteilt. Es fügt “nasb / Genesis / 1” in den Versionsparameter ein.

Ich möchte auf die Parameter wie folgt zugreifen können:

  • get_query_var (‘Version’)
  • get_query_var (‘Buch’)
  • get_query_var (‘Kapitel’)

Hier ist mein Code:

add_action( 'init' , function() { add_rewrite_tag('%version%','([^&]+)'); add_rewrite_tag('%book%','([^&]+)'); add_rewrite_tag('%chapter%','([^&]+)'); add_rewrite_rule( '^bible/(.+)/?$', 'index.php?page_id=135&version=$matches[1]', 'top' ); add_rewrite_rule( '^bible/(.+)/(.+)/?$', 'index.php?page_id=135&version=$matches[1]&book=$matches[2]', 'top' ); add_rewrite_rule( '^bible/(.+)/(.+)/(.+)/?$', 'index.php?page_id=135&version=$matches[1]&book=$matches[2]&chapter=$matches[3]', 'top' ); flush_rewrite_rules(); } ); 

Vielen Dank.

PS

Ich habe zurzeit meine Permalinks eingestellt, um Namen zu posten, der die URL aufräumt, also ist das kein Problem.

Solutions Collecting From Web of "Viele Parameter / Regeln neu schreiben"

Das Muster (.+) Entspricht einem beliebigen Zeichen, einschließlich des Schrägstrichs , sodass jede Kombination von Parametern immer mit Ihrer ersten Regel übereinstimmt, wobei alles, was folgt, als Versionsabfrage var übergeben wird. Ändern Sie alle Instanzen von (.+) ([^/]+) , damit alle Zeichen außer dem Schrägstrich übereinstimmen.

Sie möchten keine Tags umschreiben – diese sind nur zum Definieren von Permalink-Strukturen nützlich. Behalten Sie stattdessen Ihre Regeln bei und fügen Sie die Parameter als query vars hinzu :

 function wpse_205120_query_vars( $qvars ) { $qvars[] = 'version'; $qvars[] = 'chapter'; $qvars[] = 'bible'; return $qvars; } add_filter( 'query_vars', 'wpse_205120_query_vars_query_vars' ); 

Sie sollten auch das flush_rewrite_rules() loswerden, flush_rewrite_rules() alles funktioniert.