Startseite » WordPress » Umschreiben von URLs in WordPress-Tipps und Plugins

    Umschreiben von URLs in WordPress-Tipps und Plugins

    Die neuesten Updates für WordPress haben es Entwicklern ermöglicht, ihre persönliche Website sehr schnell anzupassen. Sie können ganz einfach Bereiche Ihres Designs aktualisieren, Widgets in der Seitenleiste ersetzen und sogar Ihre eigenen benutzerdefinierten PHP-Code-Funktionen schreiben. Die Ausdehnung ist riesig - und ein beliebter Bereich ist das Umschreiben hübscher URL-Permalinks.

    Es gibt einige Methoden, mit denen Sie das standardmäßige WordPress-Umschreibesystem aktualisieren können. In diesem Tutorial werde ich einige Beispiele vorstellen und zeigen, wie einfach der Prozess sein kann. Sie benötigen ein wenig Verständnis für PHP, um die Vorgänge im Code zu verfolgen. Das Kopieren und Einfügen in Ihre eigene Vorlage ist jedoch so einfach, dass praktisch keine Arbeit anfällt.

    WP_Rewrite verstehen

    Wenn Sie mit mod_rewrite auf Apache-Servern überhaupt vertraut sind, greifen Sie auf die WordPress-Umschreibsyntax zurück. Ihr System ist immer noch auf einem System aufgebaut .htaccess Datei, aber alle Regeln sind in PHP kodiert. Dies macht den Prozess tatsächlich etwas einfacher, da wir mehr Kontrolle beim Schreiben unserer eigenen URLs haben.

    Ich empfehle, die Seite der $ wp_rewrite-Klasse zu überfliegen, da sie Tonnen von Informationen zum Thema enthält. Es gibt sogar kleine Beispiele, auf die wir uns beziehen können, um alles verständlicher zu machen. Der größte Teil des Codes kann direkt in Ihr Theme geschrieben werden Functions.php Datei. Beginnen wir mit einem Blick auf die bereits in WordPress enthaltenen Standard-Umschreibungen.

    Inhalt der $ wp_rewrite-> Regeln

    Durch die Erklärung der $ wp_rewrite Klasse als global haben wir Zugriff auf alle internen Daten. Wenn Sie Ihre eigenen Regeln anhängen, werden diese zu einem Array mit dem Namen hinzugefügt $ wp_rewrite-> regeln. Es ist wichtig, sich an diese Variable zu erinnern, da Sie während der Entwicklung wahrscheinlich mehrmals auf die Daten verweisen müssen.

    Regeln); ?>

    Ich habe diesen Codeblock meinem Theme hinzugefügt page.php Datei. Es wird ein großes Datenfeld ausgegeben, das wie ein großes Durcheinander aussieht. Aber wenn du Quelltext anzeigen Auf Ihrer Seite ist es tatsächlich leicht zu erkennen, welche Umschreibungsregeln mit welchem ​​Dateinamen übereinstimmen. Schauen wir uns zum Beispiel die Regeln für das Umschreiben von Kategorien an:

    [category /(.+?)/?$] => index.php? category_name = $ passt [1] 

    Das Bit auf der linken Seite in Klammern ist unsere Apache RewriteRule, nach der Sie suchen müssen. Beginnen wir mit dem Abschnitt /Kategorie/ gefolgt von einer beliebigen Zeichenfolge. Wenn dies übereinstimmt, kann der Server referenzieren index.php? category_name = während die Variable am Ende ersetzt wird.

    Eigene Permalinks einstellen

    Allein in der $ wp_rewrite-Klasse gibt es so viel Inhalt. Viele andere Eigenschaften können referenziert werden, wie z $ wp_rewrite-> category_base oder $ wp_rewrite-> author_base zum Abrufen der Standard-URL-Strukturen für diese Seiten. Abgesehen von den Standardeinstellungen von WP können wir auch eigene Regeln erstellen.

    Neuerstellen der Autorenbasis

    Wenn Sie die Permalinks-Einstellungsseite aufrufen, haben Sie die Möglichkeit, Kategorien- und Tag-Basen zurückzusetzen. Die Option zum Zurücksetzen Ihrer Autorenbasis fehlt jedoch merkwürdig.

    Aber wir können verwenden die add_rewrite_rule () aus dem WordPress-Codex, um einige neue Einstellungen zu integrieren. In diesem Fall habe ich ersetzt /Autor/ mit /Schriftsteller/ Sie können jedoch jede Basis verwenden, die Sie möchten. Außerdem habe ich einige andere Weiterleitungen für Autorenseiten und RSS-Feeds kopiert. Sie können diesen Codeblock in die Datei functions.php Ihres Themas einfügen.

    add_action ('init', 'add_author_rules'); Funktion add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? autorname = $ matches [1]", "top"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? autorname = $ entspricht [1] & paged = $ entspricht [2] ", "oben"); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? autorname = $ entspricht [1] & feed = $ entspricht [2]", " oben"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? autorname = $ entspricht [1] & feed = $ passt [2]" , "oben");  

    Auf diese Funktion kann auch ohne die Variable $ wp_rewrite zugegriffen werden. Einige Entwickler mögen diese Methode, weil sie einfacher ist als das Festcodieren mit Klasseneigenschaften. Ich habe jedoch auch bemerkt, dass diese Methode für einige WordPress-Installationen nicht immer zuverlässig ist. Es gibt tatsächlich eine zweite Option, um diese Regeln nach dem Leeren Ihres .htaccess am Hook hinzuzufügen (siehe unten)..

    Author Base mit generate_rewrite_rules

    Für diese Methode benötigen wir wieder die globale Klasse $ wp_rewrite. Ich habe dann eine neue Variable mit dem Namen eingerichtet $ new_rules die enthält ein assoziatives Datenfeld. Mein Beispielcode schreibt nur für den grundlegenden Autorenseite-Abschnitt.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? autorname =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Wenn wir jedoch mehrere Seiten und RSS-Feeds hinzufügen möchten, können wir das Array verbessern. Sie haben die Möglichkeit, eine PHP-Funktion zu erstellen, um assoziative Array-Daten zu pushen, die möglicherweise etwas zu komplex sind. Wir könnten die Datenblöcke auch durch Kommas aufteilen und als separate Einheiten im Array verhalten. Überprüfen Sie meinen aktualisierten Code erneut in der Themendatei "functions.php".

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? autorname =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / page /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? autorname =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? autorname =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Denken Sie daran, dass keine dieser Methoden funktioniert, bis Sie die ursprünglichen Regeln zum Umschreiben geleert haben. Sie müssen dies jederzeit tun, wenn Sie Änderungen an diesen Funktionen vornehmen, aber danach bleiben Ihre neuen Regeln auf unbestimmte Zeit erhalten.

    Flushing der Rewrite-Regeln

    Wenn Sie ein Update für den URL-Umschreibcode vornehmen, werden die Änderungen nicht sofort übernommen. Sie müssen die .htaccess-Umschreiberegeln löschen, damit Ihr neuer Code hinzugefügt wird. Das Ausführen auf jeder Seite ist jedoch äußerst verschwenderisch, da es in die Datenbank schreibt und die .htaccess-Datei hart aktualisiert.

    Eine bessere Methode ist, auf Ihre Permalinks-Seite im Administrationsbereich zuzugreifen und die Änderungen erneut zu speichern. Dies ruft immer ein flush_rewrite_rules auf, so dass Sie sich nie Sorgen machen müssen, dass Benutzer am Frontend Probleme beim Laden haben. Das erneute Speichern der Seite und das Aktualisieren aller Regeln in Ihrem System dauert nur einmal. Wenn dies nicht funktioniert, können Sie versuchen, anzurufen $ wp_rewrite-> flush_rules ();

    Verwenden von Nicht-WP-Regeln

    In der $ wp_rewrite Klasse haben wir Zugriff auf Dutzende von Eigenschaften. Eine der wichtigsten Optionen ist $ wp_rewrite-> non_wp_rules Dadurch wird ein Array von Weiterleitungen erfasst, die die Datei index.php nicht betreffen.

    Dies wird in der WordPress-Plugin-Entwicklung am häufigsten verwendet. Sie können einen bestimmten benutzerdefinierten URL-Typ (z. B. / Kalender / Juni 2012 /) in das Backend Ihrer Website (/wp-content/plugins/calendarplug/myscript.php). Es gibt natürlich weitere Verwendungen für dieses assoziative Array von benutzerdefinierten Umschreibungsregeln außer Plugins. Ich habe im folgenden Zusammenhang ein hervorragendes Beispiel gegeben.

    Maskieren Sie Ihre Theme-Dateien

    Dies ist ein allgemeiner Vorschlag, den ich häufig in WordPress-Diskussionsforen sehe. Idealerweise möchten wir auf einige Dateien in der / wp-content / themes / mytheme / Ordner mit einer eleganteren URL. Beachten Sie, dass dies zum Ändern der Verzeichnisstruktur einen anderen Satz von WordPress-Neuschreibungen erfordert.

    Das interne Wiederbeschreibungssystem von WordPress schiebt den Inhalt immer auf eine einzelne Routing-Datei. Im Standardfall verwenden wir index.php zusammen mit zusätzlichen Abfragezeichenfolgendaten. Aber zum Ausblenden unseres Standardvorlagenverzeichnisses (/ wp-content / themes / mytheme / *) müssen wir viele verschiedene Dateien anzeigen.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ themenname.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Ich habe eine neue Funktion geschrieben themes_dir_add_rewrites () um alle wichtigen Inhalte aus diesen längeren URLs zu ziehen und sie im Backend umzuleiten. Beachten Sie, dass wir diese andere geheimnisvolle Eigenschaft der $ wp_rewrite-Klasse verwenden non_wp_rules. Laut den Dokumenten handelt es sich dabei um Regeln, die sich nicht auf die index.php-Datei von WP beziehen und auf der Serverseite behandelt werden.

    Das Tolle an diesen Nicht-WP-Regeln ist, dass Sie die ältere URL-Methode immer noch recht einfach verwalten können. Es gibt nichts, was Sie davon abhält, zu verlinken:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Aber es sieht viel schöner aus, wenn Sie nachschlagen können:

    /images/wordpress-urls-rewrite/logo.jpg stattdessen.

    Hilfreiche Tools und Plugins

    Es gibt nur ein paar Tools, die Sie verwenden können, wenn Sie Ihre eigenen hübschen URLs kodieren. Der Prozess ist sehr schwer zu verstehen, also lassen Sie sich nicht entmutigen, wenn Sie ein paar Wochen kämpfen. Ich glaube, der Inhalt wird einfacher, wenn Sie mehr Zeit mit dem Üben verbringen.

    Bevor Sie loslegen, sollten Sie sich einige dieser praktischen Tools und Plugins für das Umschreiben ansehen. Sie werden wahrscheinlich nicht alle benötigen, aber es ist großartig, eine so große Entwicklerbasis zu finden, die mit WP Rewrites arbeitet.

    Monkeyman Rewrite Analyzer

    Wenn Sie zum ersten Mal mit den Regeln für das Umschreiben beginnen, ist dieses Plugin ein Muss. Die Regeln für Ihre Website werden dadurch nicht geändert. Sie können lediglich Code testen und sehen, welche Weiterleitungen zu welchen Seiten führen. Es wird sogar zum Testen benutzerdefinierter Abfragevariablen für beliebige benutzerdefinierte Beitragstypen verwendet.

    AskApache RewriteRules Viewer

    Dies ähnelt dem oben genannten Plugin, allerdings können Sie Ihre eigenen Regeln nicht testen. Stattdessen zeigt dieses Plugin alle Standard-WP-Regeln Ihrer Website an und zeigt, wohin sie weitergeleitet werden. Dies beinhaltet alle wesentlichen Eigenschaften von $ wp_rewrite wie Ihre Permalink-Einstellungen und die Basis für Seiten / Kategorien / Tags.

    WP-Zugriffssteuerung

    Hier haben Sie andere Regeln, um neue Seitenumleitungen zu erstellen. Das Plugin verfügt über ein eigenes Administrationsfenster, in dem Sie Variablen wie Ihre Autorenbasis, Seitenbasis und sogar Ihre eigenen benutzerdefinierten .htaccess-Regeln bearbeiten können.

    Diese Methode unterscheidet sich von der Erstellung mit wp_rewrite. Es ist jedoch möglicherweise einfacher für Technikfreaks, die Webserver wirklich kennen und sich bequemer in .htaccess befinden.

    Regelprüfgerät neu schreiben

    Dies ist eigentlich kein WordPress-Plugin, aber es ist definitiv ein praktisches Werkzeug, um auf dem Laufenden zu bleiben. Sie können Überschreibungsregeln kopieren und für Ihre Website testen, ohne Ihre .htaccess-Datei bearbeiten zu müssen. Dies ist die perfekte Methode, um Fehler aus Ihrer Syntax zu entfernen, bevor Sie Live im Web starten.

    DW ReWrite

    DW Rewrite ist ein sehr einfaches Plugin, das unmittelbar nach der Installation 3 einzigartige, hübsche URLs erstellt. Standardmäßig werden Admin-, Login- und Registrierungs-Links in geändert /Administrator, /Anmeldung, und /registrieren beziehungsweise.

    Dies kann großartig sein, wenn Sie eine schnelle Korrektur für ein Blog mit mehreren Autoren benötigen. Dadurch wird der peinlich verschlungene WordPress-Registrierungslink (/wp-login.php?action=register).

    Fazit

    Ich hoffe, dieses Tutorial kann einige Beispiele liefern, damit Sie über WordPress-Neuschreibungen nachdenken können. Das CMS ist sehr beliebt und die Entwickler produzieren täglich neue Funktionen. Das Anpassen Ihrer eigenen URLs ist eine enorme benutzerbasierte Funktionalität. Im Vergleich zu den Standardoptionen erhält Ihre Website eine einzigartige Präsenz und Markenbildung.

    Wenn Sie Probleme mit den Umschreiberegeln haben, sollte es niemals schwierig sein, den Schaden rückgängig zu machen. Wenn Sie einfach den Funktionscode löschen und Ihre .htaccess-Regeln leeren, scheint es, als hätte sich nichts geändert. Lesen Sie auch ähnliche Artikel, die Sie zum Thema finden. Und wenn Sie Fragen oder Kommentare haben, können Sie uns diese im Post-Diskussionsbereich mitteilen.