Verwenden von WordPress für die Entwicklung von Webanwendungen Verfügbare Funktionen, Teil 6 URL-Umschreibung (oder Routen)

Eine der schönsten Neuerungen bei modernen Frameworks für die Entwicklung von Webanwendungen ist die Möglichkeit, wirklich saubere Routen (URL-Schemata) zu generieren, die dem konzeptionellen Modell der Anwendungsstruktur entsprechen.

Zum Beispiel, wenn man irgendeine Art von Daten angibt, sagen wir eine Individuell-Möglicherweise können Sie die folgenden Aktionen ausführen:

  • hinzufügen
  • aktualisieren
  • löschen

Und so weiter.

Je nach Art Ihrer Bewerbung können Sie möglicherweise mehr tun (z. B. einen Ehepartner hinzufügen), aber für die Zwecke dieses Beitrags reichen die grundlegenden CRUD-Vorgänge aus, um den Punkt zu demonstrieren.

Für diejenigen von Ihnen, die mitverfolgt haben, haben wir uns eine Reihe von Features angesehen, die WordPress als Grundlage für die Anwendungsentwicklung bietet. Um diese Diskussion fortzusetzen, ist es wichtig, dass wir uns die APIs ansehen, die zur Verfügung stehen, um die Umschreibregeln von WordPress anzupassen.

Der durchschnittliche Benutzer ist wahrscheinlich mit dem Ändern des URL-Schemas im WordPress-Dashboard vertraut. Dies wird kurz besprochen, um sicherzustellen, dass wir uns alle auf derselben Seite befinden. Es stehen jedoch weitaus mehr Funktionen für Benutzer zur Verfügung, die das Überschreiben von URLs verstehen in WordPress.

Tatsächlich haben wir die Möglichkeit, Regeln für das Umschreiben von URLs zu erstellen, die genau denen der modernen MVC-basierten Frameworks entsprechen.


Regeln zum Umschreiben von Regeln

Um sicherzustellen, dass wir uns alle auf derselben Seite befinden, können Regeln zum Umschreiben als die Art und Weise betrachtet werden, in der ein bestimmtes Muster mit dem Webserver abgeglichen wird, um Daten aus der Datenbank abzurufen.

In der Standardinstallation von WordPress sieht die Standard-Permalink-Struktur beispielsweise so aus:

http://domain.com/?p=123

Diese URL enthält einen Abfragezeichenfolge-Parameter, nämlich das Schlüsselwertpaar von p = 123 was im Kontext von WordPress sagt "den Post mit der ID von 123 abrufen".

Wenn Sie sich die Optionen auf der Website genauer ansehen Permalink-Einstellungen Auf dem Bildschirm sehen Sie auch eine Vielzahl von Optionen:

Ein anderes Beispiel für die Umschreibungsregeln, die Sie wahrscheinlich sehen werden, sind die sogenannten "Pretty Permalinks" oder, wie im WordPress-Dashboard genannt, "Post Name"..

In diesem Format sieht die URL folgendermaßen aus:

http://domain.com/post-title/

Von hier aus gelangt die angeforderte URL in den Webserver und ermittelt dann anhand eines Satzes von Regeln die ID des Beitrags mit diesem Titel und gibt sie an den anfragenden Client zurück (der Browser wäre dies)..

Zwischen diesen beiden Beispielen gibt es ein grundlegendes Prinzip, das genau zeigt, welche Regeln zum Umschreiben gelten.

Kurz gesagt definieren Umschreibungsregeln einen Satz von Regeln, in denen die eingehende URL in ein Format übersetzt wird, das Informationen aus der Datenbank für den Client abruft.

Natürlich wirft dies zwei Fragen auf:

  1. Wie werden Umschreibungsregeln generiert??
  2. Und vielleicht noch wichtiger, warum sind sie so kompliziert?

Die Geschäftsregeln für das Umschreiben von Regeln

Der Grund dafür, dass das Umschreiben von Regeln für Entwickler eine Herausforderung darstellt, liegt darin, dass sie auf regulären Ausdrücken basieren. Und es gibt ein altes Zitat über reguläre Ausdrücke von Jamie Zawinski:

Einige Leute denken, wenn sie mit einem Problem konfrontiert sind: "Ich weiß, ich verwende reguläre Ausdrücke." Jetzt haben sie zwei Probleme.

Witzig, aber wahr. Und das ist Warum der Umgang mit benutzerdefinierten Regeln zum Umschreiben in WordPress für viele Entwickler eine Herausforderung sein kann.

Leider können wir nicht alle Varianten oder Typen von URL-Schemata demonstrieren, die erstellt oder durch Umschreiberegeln unterstützt werden können. Wir können uns jedoch einige praktische Beispiele ansehen, die zeigen, wie Sie mit den Grundlagen beginnen und eine Grundlage oder einen Leitfaden bereitstellen was wir in Zukunft mit unseren Anwendungen machen müssten.

Regeln zum Überschreiben von Flushing

Beachten Sie Folgendes: Wenn Sie Ihre Umschreiberegeln definieren, werden diese nicht sofort wirksam. Sie wurden gelöscht. Das bedeutet, dass Sie das alte Regelwerk löschen müssen, um es durch das neue Regelwerk zu ersetzen.

Es gibt zwei Möglichkeiten, wie Sie dies tun können:

  1. Sie können auf klicken Änderungen speichern in dem Permalink-EinstellungenInstrumententafel. Trotzdem wird eine Option ausgewählt, was auch immer Sie in Ihrer Anwendung definiert haben Functions.php Datei wird verwendet.
  2. Sie können anrufen $ wp_rewrite-> flush_rules (); und sich programmatisch um das Problem kümmern.

Unabhängig von der gewählten Route ist es wichtig, dass Sie sich an diesen Schritt erinnern, da Sie jedes Mal, wenn Sie eine neue Überschreibungsregel definieren, die alten Regeln leeren müssen.

Wie funktioniert die Rewrite-API??

Wenn es darum geht, eigene Umschreibungsregeln zu erstellen, ist es wichtig zu verstehen, wie die Rewrite-API funktioniert.

Es kann in einem vierstufigen Prozess destilliert werden:

  1. Eine URL wird vom Webserver angefordert.
  2. Wenn der angeforderte URL Inhalt enthält, wird der Inhalt zurückgegeben (dies kann ein Bild, eine Schriftart oder was auch immer sein)..
  3. Wenn der Inhalt nicht vorhanden ist, wird die Anforderung weitergeleitet index.php welches dem Muster der URL entspricht.
  4. Der Inhalt wird dann von WordPress an den anfragenden Client zurückgegeben.

Wenn Sie daran interessiert sind, die Definition von Umschreiberegeln basierend auf der Konfiguration anzuzeigen, die Sie in haben Permalink Dashboard, überprüfen Sie das Plugin Rewrite Rules Inspector.

Dieses Plugin rendert eine Liste aller derzeit gültigen Regeln, um den angegebenen URL-Schemas zu entsprechen, einschließlich der regulären Ausdrücke und der übereinstimmenden Variablen index.php.

Sinn ergeben? Wenn nicht, schauen wir uns ein paar einfache, praktische Beispiele an.

Ein Beispiel für Regeln zum Umschreiben

Angenommen, wir wissen, dass Muster abgeglichen werden und durchgehen index.php, wir können die Vorteile nutzen add_rewrite_rule Funktion, um zu definieren, wie unsere benutzerdefinierten URLs funktionieren.

Ein kurzer Titel für eine Beitrags-ID

Nehmen wir an, wir betrachten den ersten Beitrag im System - das heißt, wir schauen auf den Beitrag mit der ID 1.

In den meisten Vanilla-WordPress-Installationen ist dies der Fall Hallo Welt und die URL ist normalerweise http://domain.com/hello-world oder http://domain.com/?p=1 abhängig von Ihren Permalink-Einstellungen (dh Ihren aktuellen Satz von Umschreibungsregeln).

Aber definieren wir eine Regel so http://domain.com/first lädt auch den ersten Beitrag in die Datenbank:

 Funktion example_add_rewrite_rules () add_rewrite_rule ('first', 'index.php? p = 1', 'top'); flush_rewrite_rules ();  add_action ('init', 'example_add_rewrite_rules');

Fügen wir noch eine weitere Regel hinzu, die folgen wird und es uns erlaubt, den zweiten Beitrag in die Datenbank zu laden. Nämlich, http://domain.com/?p=2.

Funktion example_add_rewrite_rules () add_rewrite_rule ('first', 'index.php? p = 1', 'top'); add_rewrite_rule ('second', 'index.php? p = 2', 'top'); flush_rewrite_rules ();  add_action ('init', 'example_add_rewrite_rules');

Angenommen, Sie haben die Dokumentation für gelesen add_rewrite-Regel, das ist leicht genug zu verstehen, richtig?

Kurz gesagt, es gibt drei Argumente:

  • Das erste Argument ist ein regulärer Ausdruck, der mit der angeforderten URL abgeglichen wird. In unserem Fall verwenden wir einfache Wörter.
  • Das zweite Argument ist die URL, die tatsächlich abgerufen werden soll. In unserem Fall rufen wir den ersten bzw. zweiten Beitrag ab.
  • Das letzte Argument ist schließlich die Priorität, die "oben" oder "unten" sein kann. Wenn "top" eingestellt ist, wird diese Regel vor allen anderen Regeln ausgewertet. Wenn jedoch "unten", wird es zuletzt ausgewertet.

Nun sind diese Beispiele grundlegend. Dies reicht nicht aus, um uns wirklich zu zeigen, wie Sie benutzerdefinierte Routen wie die zuvor in diesem Artikel beschriebenen einrichten. Dazu müssen wir uns einige komplexere Ausdrücke ansehen.

Hinweise zum Überschreiben von Regeln zum Überschreiben importieren

Aber bevor wir das tun, ist es wichtig, diese Berufung zu beachten flush_rewrite_rules () wie wir es oben machen ist eigentlich ein schlechte Praxis. Es funktioniert im obigen Beispiel, kann aber tatsächlich die Ladezeit einer Site verlangsamen.

In der Tat muss es wirklich nur aufgerufen werden, wenn sich die Umschreiberegeln ändern. Dies kann vorkommen, wenn ein Plugin aktiviert ist oder sich ändert, wenn ein Design aktiviert wird.

Stellen Sie in jedem Fall sicher, dass Sie Ihre Funktionen ordnungsgemäß verknüpfen, sodass die Regeln zum erneuten Schreiben nicht für jede einzelne Seite geladen werden. Dies ist nur dann der Fall, wenn sich die Regeln für das neue Schreiben geändert haben.


Ein komplizierterer Ansatz für das Umschreiben von Regeln

Um einen komplizierteren Satz von Umschreiberegeln einzuführen, wie die zuvor in diesem Beitrag von CRUD-Operationen beschriebenen, ist es wichtig, die folgenden zwei Funktionen zu verstehen:

  • add_rewrite_tag informiert WordPress über benutzerdefinierte Abfragezeichenfolgenvariablen. Dies wird auch in Verbindung mit der nächsten Funktion verwendet.
  • add_rewrite_rule, Wie bereits erwähnt, können wir in WordPress weitere Regeln zum Umschreiben hinzufügen (sowie deren Priorität festlegen)..

Nehmen wir an, wir haben einen benutzerdefinierten Posttyp namens Individuell das repräsentiert eine Person in der Anwendung. Dann lassen Sie uns sagen, dass die Individuell Außerdem stehen folgende Methoden und entsprechende URLs zur Verfügung:

  • alles: http://domain.com/individuals/
  • aktualisieren: http://domain.com/individual/update/1 die verwendet wird, um die erste Person zu aktualisieren
  • löschenhttp://domain.com/individual/delete/1 die verwendet wird, um die erste Person zu löschen

Das Schema ist also einfach genug, aber wie setzen wir es um?

Zunächst müssen wir die Umschreibungsregeln definieren:

 function example_add_rewrite_rules () // Definiere das Tag für die individuelle ID add_rewrite_tag ('% individual_id%', '([0-9] *)'); // Definiere die Regeln für jedes Individuum add_rewrite_rule ('^ individual / update / ([0-9] *)', 'index.php? Individual = update & individual_id = $ matches [1]', 'top'); add_rewrite_rule ('^ individual / delete / ([0-9] *)', 'index.php? individual = delete & individual_id = $ matches [1]', 'top');  add_action ('init', 'example_add_rewrite_rules');

Als Nächstes müssen Sie diese benutzerdefinierten Funktionen für jede einzelne Person definieren, damit sie beim Aufruf den richtigen Datensatz in der Datenbank aktualisieren.

In diesem Fall definieren wir zwei Funktionen - eine für die Aktualisierung der Individuell und eine zum Löschen der Individuell. Der folgende Code setzt außerdem voraus, dass ein Teil der Informationen in dem vom Browser übermittelten Formular enthalten sein wird.

Insbesondere wird davon ausgegangen, dass die individuelle ID, der Vorname, der Nachname und andere Informationen gesendet werden, um die Person zu aktualisieren.

 Funktion example_process_individual ($ input) if (example_updating_user ()) example_update_individual ($ input);  else if ('true' == $ input ['delete_individual']) example_delete_individual ($ input ['individual_id']);  if (! is_admin ()) add_action ('init', 'example_process_individual'); Funktion example_update_individual ($ input) / * Die eingehende $ input-Collection eines angenommenen Formulars *, die zur Aktualisierung des Benutzers verwendet wird. * * Es kann Informationen wie ID, Vorname, Nachname usw. enthalten. * * Bei Erfolg verwenden wp_redirect um zur Startseite zurückzukehren, oder laden Sie die Seite neu *, um einen Fehler anzuzeigen. * / Funktion example_delete_individual ($ individual_id) / * Verwenden Sie die eingehende ID, um den einzelnen Datensatz zu suchen und ihn aus der Datenbank zu entfernen. * * Bei Erfolg verwenden wp_redirect um zur Startseite zurückzukehren, oder laden Sie die Seite neu *, um einen Fehler anzuzeigen. * / function example_updating_user () return 0 == strpos ($ _SERVER ['REQUEST_URI'], '/ individual / update');  function example_deleting_user () return 0 == strpos ($ _SERVER ['REQUEST_URI'], '/ individual / delete'); 

Beachten Sie oben, dass die erste Funktion in der eingehängt ist drin Aktion und ist nur Wird ausgelöst, wenn der Benutzer nicht als Administrator angemeldet ist. Dies kann weiter verbessert werden, indem es bedingt eingestellt wird, dass es nur geladen wird, wenn es von einer bestimmten Seite kommt. Für dieses Beispiel dient es jedoch seinem Zweck.

Lesen Sie als Nächstes die Codekommentare für Aktualisieren und das Löschen Funktionen, um zu sehen, wie sie funktionieren sollen.

Beachten Sie schließlich, dass die letzten beiden Funktionen einfache Helfer sind, die es uns ermöglichen, saubereren Code in der anfänglichen Hook-Funktion zu schreiben.

Ein bisschen unvollständig

Ich weiß, dies ist ein unvollständiges Beispiel, aber für einen ausführlichen Artikel und ein komplexes Thema habe ich mich bemüht, die WordPress Rewrite API vorzustellen, die Vorteile der Verwendung zu diskutieren und darüber zu sprechen wie es verwendet werden kann, um sauberere URL-Routen zu erstellen.

Die Wahrheit ist, es ist immer noch ein herausforderndes Thema, das am besten durch die Implementierung verstanden werden kann. Trotzdem ist dies eine weitere Komponente der WordPress-Anwendung, die es ermöglicht, als Grundlage für die Entwicklung von Webanwendungen zu dienen.


Als nächstes

Nachdem dies gesagt wurde, ist es an der Zeit, mit dem Konzept von Caching.

Sicher, es gibt viele Zwischenspeicherungs-Plugins, die für WordPress verfügbar sind, aber wenn Sie ein Entwickler sind, möchten Sie eine Ebene des nativen Zwischenspeicherns einbauen und WordPress-APIs dazu nutzen. Wenn dies der Fall ist, ist es wichtig, sich mit den verfügbaren Möglichkeiten und deren Vorgehensweise vertraut zu machen.

Nachdem dies gesagt ist, werden wir uns als nächstes auf das konzentrieren Transienten-API So können wir ein wenig natives Caching selbst handhaben und überprüfen, wie dies durch Caching-Mechanismen von Drittanbietern dazu beitragen kann, unsere Anwendungen noch schneller zu machen.