In WordPress werden URLs nicht Routen zugeordnet. Sie werden Datenbankabfragen zugeordnet.
Wenn Sie WordPress im "Standard" -Modus für Permalinks verwenden, haben Sie eine Reihe von Variablen in der Haupt-URL-Abfrage, wie z. B.? P = 1 oder? Page = 234 und so weiter. Es gibt auch? S = Suche und viele andere.
Wenn Sie die "hübschen" Permalinks verwenden, wird ein großer Regelsatz mit der Bezeichnung "Umschreiberegeln" erstellt, der verschiedene URL-Muster direkt auf denselben Satz von URL-Parametern abbildet. Eine URL wie / 2014/04/12 / example würde also? Year = 2014 & month = 04 & day = 12 & postname = example oder ähnlich lauten. Das Folgende gilt also auch für diese, nachdem diese Zuordnung vorgenommen wurde.
Diese Variablen steuern im Wesentlichen die Hauptinstanz der WP_Query-Klasse. Die WP_Query-Klasse enthält alle Informationen, mit denen die Datenbankabfrage erstellt wird, um die "Posts" aus der Datenbank abzurufen. Die verschiedenen übergebenen Parameter steuern, welche Art von Abfrage erstellt und welche Daten abgerufen werden.
Sehen Sie, alles, was von WordPress angezeigt werden kann, ist im Wesentlichen ein "Beitrag". Ein Blog ist eine Reihe von Beiträgen in umgekehrter zeitlicher Reihenfolge. Eine "Seite" ist ein statischer Beitrag mit einem definierten Namen. Ein "benutzerdefinierter Beitragstyp" ist genau das, wonach es klingt, ein "Beitrag" mit einem benutzerdefinierten Typ, den Sie definieren. Alle Hauptabfragen, um etwas in WordPress anzuzeigen, erhalten eine Untermenge von Beiträgen aus der Tabelle wp_posts.
Die WP_Query macht das. Die Parameter aus der URL werden direkt in diese Hauptabfrage gesendet und dort verwendet.
Das Thema bestimmt dann, welche Vorlage verwendet werden soll, basierend darauf, mit was die Abfrage zurückkommt. Wenn Sie / category / example angefordert haben, wird dies zu? Category_name = example, was bedeutet, dass das $ wp_query-> query_vars-Hauptarray diese Informationen abruft und die WP_Query die letzten X Posts für die Kategorie "example" und diese abruft setzt das Flag is_category auf true.
Danach wird der Template-Loader ausgeführt, um festzustellen, ob is_category () true zurückgibt, und um die Kategorieschablone auszuwählen, wird nach category-example.php gesucht und entsprechend dem Template auf category.php usw. zurückgegriffen Hierarchie.
Die Frage, ob Sie die Funktionsweise von URLs ändern möchten, ist also ganz einfach: Möchten Sie die URLs ändern oder auf welche Art und Weise sie zugeordnet werden? Da URLs nicht Funktionen zugeordnet sind, sind sie Parametern zugeordnet, die die Abfrage steuern. Wenn Sie möchten, dass die URL diese Hauptabfrage anpasst, ist dies ein etwas anderer Vorgang als wenn Sie möchten, dass eine spezielle URL einen ganz anderen speziellen Code ausführt.
Und um Ihre spezielle Frage in den Kommentaren zu beantworten: "Gibt es nicht Fälle, in denen Sie eigentlich keine Beiträge anzeigen möchten?" Nein, da ist kein. Alles ist ein Beitrag. Alle Inhalte werden in Beiträgen gespeichert. Wenn Sie Inhalte an einem anderen Ort speichern und anders sein möchten, können Sie dies tun, aber es ist schwieriger, da dies ehrlich gesagt normalerweise nicht erforderlich ist. Wenn Sie speziellen Inhalt haben, erstellen Sie einen benutzerdefinierten Beitragstyp, speichern Sie Ihren Inhalt als Beitrag mit diesem Typ und ordnen Sie ihm ein URL-Muster zu. Einfach.