Wie erstelle ich benutzerdefinierte URL-Routen?

Ich habe eine sehr spezielle Anforderung, hoffentlich kann ich es erklären, ohne zu verwirrend zu sein. Ich habe eine Seitenvorlage erstellt, in der ich einige Eigenschaften auflisten kann, die ich aus einer externen XML-Datei erhalte, bisher keine Probleme, sagen wir, die URL ist wie folgt: http://www.mysite.com/properties/

Jede Eigenschaft hat einen Link, der den Benutzer auf eine “Single Property” -Seite redirect sollte, die mehr Informationen darüber anzeigt. Ich frage mich, ob es eine Möglichkeit gibt, den Link so zu gestalten http://www.mysite.com/properties / 123 ? Wo “123” wäre die ID der Eigenschaft, im Grunde, wenn ich die URL wie Eigenschaften / some_id Ich möchte in der Lage sein, eine Ansichtsdatei (wie die single.php oder page.php-Dateien) aber spezifisch für diese URL-Bedingung zu laden .

Ist das möglich? Danke im Voraus!

Solutions Collecting From Web of "Wie erstelle ich benutzerdefinierte URL-Routen?"

Fügen Sie dies zur functions.php Ihres Themes hinzu oder fügen Sie es in ein Plugin ein .

add_action( 'init', 'wpse26388_rewrites_init' ); function wpse26388_rewrites_init(){ add_rewrite_rule( 'properties/([0-9]+)/?$', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); } add_filter( 'query_vars', 'wpse26388_query_vars' ); function wpse26388_query_vars( $query_vars ){ $query_vars[] = 'property_id'; return $query_vars; } 

Dies fügt eine Rewrite-Regel hinzu, die Anfragen an /properties/ mit einer beliebigen Kombination von Zahlen weitergibt, die auf Pagename- properties folgen, wobei die Abfrage var property_id gesetzt ist. Seien Sie sicher, dass Sie Ihre Permalinks-Einstellungsseite besuchen und speichern, um die Umschreibregeln zu löschen, damit diese neue Regel eingefügt wird.

In der Vorlage page-properties.php gibt get_query_var('property_id') die Eigenschaft id zurück, wenn sie festgelegt wurde. Wenn sie nicht angezeigt wird, wird die Standardeigenschaftenseite angezeigt.

Eine andere Möglichkeit, es zu tun:

 add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0); 

Codex Rewrite API / Regel hinzufügen

Codex Rewrite API / Hinzufügen Rewrite-Tag