Welche URL-Neuschreibregel sollte ich schreiben, um eine Variable in der URL abzurufen?

Ich habe eine benutzerdefinierte Seitenvorlage, die sich wie ein Archiv verhält: Die URL lautet www.mysite.com/test/ . “Hübsche Links” sind aktiviert. Ich muss eine Nummer wie www.mysite.com/test/1234 .

Der Zweck ist, diese Nummer abzurufen und das entsprechende Archiv zu bedienen.

Ich habe eine Variable namens num , die in der functions.php wie folgt deklariert ist:

 add_filter('query_vars', 'my_register_qv' ); function my_register_qv( $qvars ){ //Add query variable to $qvars array $qvars[] = 'num'; return $qvars; } 

Immer noch in functions.php , hier ist die Regel, die ich schrieb:

  function add_rewrite_rules($aRules) { $aNewRules = array('test/^[0-9]*$' => 'index.php?pagename=test&num=$matches[1]'); $aRules = $aNewRules + $aRules; return $aRules; } add_filter('rewrite_rules_array', 'add_rewrite_rules'); 

Schließlich, in meinem Vorlagencode, hier ist, wie ich die Variable abrufen:

 //$maxnum is the default value $num = get_query_var('num', $maxnum); 

Aber wenn ich eine URL wie diese www.mysite.com/test/1234 : www.mysite.com/test/1234 , wird der Wert “1234” nicht von der function get_query_var() abgerufen. Stattdessen habe ich den Standardwert erhalten.

Was mache ich falsch ?

Danke für Ihre Hilfe

Solutions Collecting From Web of "Welche URL-Neuschreibregel sollte ich schreiben, um eine Variable in der URL abzurufen?"

Das Problem liegt in deiner Rewrite-Rules-function, sollte es sein

 function num_rewrite_rule(){ add_rewrite_rule( 'test/([0-9]+)/?$', 'index.php?pagename=test&num=$matches[1]', 'top' ); } add_action( 'init', 'num_rewrite_rule' ); 

Referenz

add_rewrite_rule

HINWEIS: Denken Sie immer daran, Ihre Permalinks zu löschen, indem Sie ** Einstellungen – Permalinks ** aufrufen.