Benutzerdefinierte WordPress-URL wird neu geschrieben

Ich versuche, eine benutzerdefinierte Rewrite-Regel mit einer einzelnen Variablen zu einer bestimmten Seite hinzuzufügen. Die ‘hässliche’ Version ist http://example.com/used-cars/car/?carname=name-of-car und die ‘hübsche’ Version, für die ich mich interessiere, ist http://example.com/used-cars/car/name-of-car .

http://example.com/used-cars/car/ ist eine Seite mit einer benutzerdefinierten Vorlage, die nichts anzeigt, wenn die Variable carname nicht festgelegt ist. Dies ist der Code, den ich bisher habe:

 add_filter('query_vars', 'ip_add_rewrite_query_vars'); function ip_add_rewrite_query_vars($query_vars) { $query_vars[] = 'carname'; return $query_vars; } add_action('init', 'ip_add_rewrite_rules'); function ip_add_rewrite_rules() { add_rewrite_rule( 'used-cars/car/([^/]+)/?$', 'index.php?p=403&carname=$matches[1]', 'top' ); } 

Wenn ich zu http://example.com/used-cars/car/name-of-car gehe, wird es einfach auf http://example.com/used-cars/car und get_query_var('carname') umgeleitet. gibt null .

Ich habe versucht, ein paar verschiedene Varianten zu tun (wie zum Beispiel $wp_rewrite direkt $wp_rewrite , mit add_rewrite_tag() ), aber ich bekomme entweder das gleiche Ergebnis oder eine 404-Fehler. Ich spüle die Umschreibregeln und den Cache meines Browsers jedes Mal, wenn ich versuche, die Seite erneut zu testen. Ich habe das Rewrite Analyzer Plugin installiert und mein Neuschreiben erscheint dort und sieht korrekt aus, verglichen mit den Standardeinstellungen. Soweit ich aus allen Beispielen im Internet sehen kann, sollte der Code, den ich habe, funktionieren – es ist fast das gleiche Beispiel aus der Codex-Seite – und ich habe keine Ahnung, warum das nicht so ist.

Dies ist ein Multisite-Setup (jede Site in einer anderen Subdomain) – Ich bin mit Multisite nicht wirklich vertraut, aber ich denke nicht, dass da etwas ist, was sich auf das benutzerdefinierte Neuschreiben auswirken würde?

Solutions Collecting From Web of "Benutzerdefinierte WordPress-URL wird neu geschrieben"

Ich mache etwas Ähnliches mit benutzerdefinierten Datensätzen, sogenannten Shops, und deren spezifischer ID-Nummer. In meinem Fall möchte ich http://example.com/shops/UNIDrecordthatsreallylong

Laden mit der Variable shop_unid, die der UNID-Datensatz ist. Hier ist meine Arbeitsfunktion:

 //Shop page rewrites function shop_rewrite() { add_rewrite_rule('^shops/([^/]*)/?','index.php?pagename=shops&shop_unid=$matches[1]','top'); add_rewrite_tag('%shop_unid%','([^&]+)'); } add_action('init', 'shop_rewrite'); 

Beachten Sie, dass ich Seitenname anstelle der Beitragsnummer verwendet habe. Sie wissen nie, ob sich das ändern könnte, sagen Sie auf einer anderen Multisite oder wenn Sie die Site auf einen neuen Server exportiert haben, so dass ich immer die Hardcodierung zu bestimmten Post-IDs vermeiden kann.

Jetzt auf der Seite oder in einer eigenen function sollte dies funktionieren:

 global $wp_query; $shop_unid = $wp_query->query_vars['shop_unid']; print_r($shop_unid);