Warum sollten Sie URLs nicht in WordPress-Themes oder Plugins codieren

Wenn Sie ein Theme oder Plugin entwickeln, müssen Sie oft eine URL in Ihren Code einfügen. In einem Plugin benötigen Sie beispielsweise einen Link zu einem Stylesheet, das mit dem Plugin gebündelt ist. In einem Design möchten Sie wahrscheinlich die URL der Site in Ihrem Header kodieren.

Es kann verlockend sein, die URL einfach auf dieselbe Weise wie in einer statischen Website zu codieren. Dies ist jedoch keine gute Idee. In diesem Tutorial erkläre ich, warum Sie dies nicht tun sollten. Außerdem werden Ihnen die Funktionen gezeigt, mit denen Sie URLs dynamisch erstellen können.

Warum sollten Sie keine URLs in Ihren Designs und Plugins codieren?

Beginnen wir mit den Themen. Wenn Sie ein Design für die Verwendung auf einer bestimmten Site entwickeln, ist es möglicherweise nicht zu schädlich, die Domäne dieser Site in den Designdateien irgendwo hinzuzufügen. Es gibt jedoch bestimmte Risiken und Nachteile:

  • Wenn Sie sich entscheiden, den Domainnamen der Site zu ändern, müssen Sie alle hartcodierten URLs bearbeiten.
  • Wenn Sie an einer Entwicklungs-Site arbeiten, die Sie beim Start auf einen Live-Server verschieben, müssen Sie alle hartcodierten URLs ändern.
  • Wenn Sie sich entscheiden, das Design auf einer anderen Site zu verwenden, müssen Sie alle diese URLs bearbeiten.
  • Wenn Sie sich entscheiden, das Design für die Öffentlichkeit freizugeben oder von anderen Entwicklern verwendet werden, wird es beschädigt.
  • Wenn Sie das Design als Grundlage für ein anderes Design verwenden, das Sie für eine andere Site entwickeln, müssen Sie alle URLs bearbeiten.
  • Wenn sich Ihre Site in einem Unterverzeichnis des Stammverzeichnisses Ihrer Domain befindet, Sie jedoch WordPress angewiesen haben, das Stammverzeichnis für die URL zu verwenden, weisen Ihre hartcodierten URLs möglicherweise auf die falsche Stelle.
  • Wenn Sie einmal vergessen, einen der oben genannten Schritte auszuführen, werden 404 Fehler angezeigt, und Links zu Ressourcen wie Bildern und Stylesheets funktionieren nicht.

Also mach es nicht!

Aber was ist mit Plugins? Nun, das ist noch riskanter. Es ist nicht ungewöhnlich, ein Theme nur für eine Site zu entwickeln, aber die meisten Plugins werden auf mehreren Sites verwendet. Es ist unwahrscheinlich, dass Sie jemals eine vollständige URL fest in ein Plugin kodieren würden, aber Sie könnten versucht sein, eine URL zu verwenden, um die URL der Site abzurufen und dann den Pfad zum Plugin-Verzeichnis zu codieren. Auch dies ist riskant:

  • Wenn Ihr Plugin in ein anderes Verzeichnis verschoben wird (z. B. muss das Verzeichnis verwendet werden), werden alle Links unterbrochen.
  • Wenn Ihr Plugin in einem Multisite-Netzwerk installiert ist, auf dem eine ältere Version von WordPress ausgeführt wird, können Ihre Links beschädigt werden.
  • Wenn Ihr Plugin in einer Site mit einer anderen Verzeichnisstruktur als der für Ihre URLs verwendeten installiert ist, werden Ihre Links erneut beschädigt.

Dies kann dazu führen, dass Ihr Plugin überhaupt nicht funktioniert.

Was tun Sie, um hartcodierende URLs in WordPress zu vermeiden??

Funktionen, die anstelle von hartcodierten URLs zu verwenden sind

Es gibt eine Reihe von Funktionen, mit denen Sie hartcodierende URLs in WordPress vermeiden. Ich werde sie in fünf Kategorien einteilen:

  • Funktionen zum Abrufen der Homepage der Site
  • Funktionen zum Abrufen anderer Frontend-Links (einschließlich Posts, Seiten, Anhängen und Archiven)
  • Funktionen zum Abrufen von URLs für die Admin-Bildschirme
  • Funktionen zum Abrufen von URLs für Dateien in Ihrem Plugin und in den Verzeichnissen der Themen
  • Funktionen zum Abrufen von Stylesheets und Skripten

Beginnen wir mit den Funktionen, um einen Link zur Homepage abzurufen und auszugeben.

Abrufen der Homepage-URL

Die folgenden Vorlagen-Tags rufen die Homepage-URL Ihrer Website ab oder geben sie aus:

  • bloginfo ('url'): Zeigt die Heimat-URL an, wie sie in Ihren Leseeinstellungen im Administrator angegeben ist.
  • get_bloginfo ('url'): ruft die Site-URL ab, ohne sie anzuzeigen.
  • home_url (): ruft die URL der Homepage ab, ohne sie anzuzeigen: use echo esc_url (home_url ('/')); um die Heimat-URL mit einem nachgestellten Schrägstrich anzuzeigen. Dies erfordert zwei optionale Parameter: $ path wenn Sie einer bestimmten Seite einen Pfad hinzufügen oder einen nachstehenden Schrägstrich hinzufügen möchten, und $ Schema um das Schema für die URL anzugeben, z http, https und relativ.
  • get_home_url () Ruft die URL für die Homepage ab und unterstützt Multisite: Sie können die Blog-ID als Parameter angeben.
  • Seiten-URL(): Die URL, unter der WordPress gespeichert ist. Wenn sich Ihre WordPress-Installation im Wordpress-Unterverzeichnis befindet, wird die URL abgerufen http://mysite.com/wordpress
  • get_site_url (): Ruft die Site-URL ab, ohne sie auszugeben. Kann auch mit Parametern verwendet werden, um die URL für eine Site in einem Multisite-Netzwerk auszugeben, einen Pfad hinzuzufügen und ein bestimmtes Schema zu verwenden.
  • network_home_url (): Die Heimat-URL für die Hauptwebsite in einem Netzwerk mit mehreren Standorten. Dies ist nützlich, wenn Sie beispielsweise einen Link zur Hauptsite in die Fußzeile jeder Site im Netzwerk einfügen möchten.
  • network_site_url (): Die Site-URL für die Hauptsite in einem Multisite-Netzwerk.

Wie Sie sehen, gibt es einige verschiedene Tags, mit denen Sie die URL anzeigen können. Welche Sie verwenden, hängt von einer Reihe von Schauspielern ab:

  • Möchten Sie die URL einfach abrufen oder anzeigen??
  • Möchten Sie einen Pfad nach der Heimat-URL hinzufügen? (Sie können dies in einigen Fällen vermeiden, indem Sie die Funktionen im nächsten Abschnitt verwenden.)
  • Möchten Sie das Schema angeben?
  • Möchten Sie die Homepage-URL oder die Site-URL abrufen, wenn diese unterschiedlich sind?
  • Möchten Sie die URL für eine Site in einem Multisite-Netzwerk abrufen??

Sie sollten eine davon in Ihren Designvorlagendateien verwenden, in die Sie einen Link zur Homepage einfügen möchten, z. B. wenn ein Logo im Kopf Ihrer Website mit der Homepage verlinkt wird. Es kann auch Fälle geben, in denen ein Plugin die URL der Homepage abrufen oder anzeigen muss.

Abrufen anderer Front-End-URLs

Neben der URL der Homepage kann es vorkommen, dass Sie Links zu anderen Seiten Ihrer Website codieren möchten. Dazu gehören Seiten, Beiträge, Anhänge und benutzerdefinierte Beitragstypen. Hier sind die Funktionen, die Sie verwenden sollten:

  • post_permalink () gibt einen Link zu einem Beitrag mit der Beitrags-ID als Parameter aus.
  • get_page_link () ruft den Link zu einer Seite mit der Seiten-ID als Parameter ab (gibt sie jedoch nicht aus).
  • get_permalink () ruft den Permalink für einen Beitrag oder eine Seite ab (gibt diesen jedoch nicht aus), wobei die Beitrags- oder Seiten-ID als Parameter angegeben ist.
  • get_category_link () ruft den Link zu einem Kategorienarchiv ab, mit der Kategorie-ID als Parameter.
  • get_tag_link () ruft den Link zur Archivseite eines Tags mit der Tag-ID als Parameter ab.
  • get_post_type_archive_link () ruft den Link zum Archiv eines Beitragstyps ab, wobei der Beitragstyp als Parameter angegeben wird.
  • get_term_link () holt die Verbindung zu einem Taxonomiebegriff, wobei der Begriff und die Taxonomie als Parameter dienen.
  • the_attachment_link () gibt die Verknüpfung zu einem Anhang aus, wobei die Anhangs-ID als erster Parameter steht. Verwenden Sie andere Parameter, um die Bildgröße festzulegen und zu bestimmen, ob der Link zu der Datei selbst oder ihrer Anhangsseite führt.
  • get_attachment_link () holt den Link für einen Anhang mit der Anhangs-ID als Parameter.
  • wp_get_attachment_link () ruft den Link zu einer Anlage ab, ermöglicht jedoch zusätzlich die Anzeige des Bildes, wenn es sich bei der Anlage um ein Bild mit einer von Ihnen angegebenen Größe handelt.
  • get_search_link () Ruft den Link zur Suchseite ab. Sie können eine Abfrage als Parameter definieren oder leer lassen. In diesem Fall wird die aktuelle Abfrage verwendet.

Admin-URLs abrufen

Wenn Sie ein Plugin oder ein Design mit Einstellungsbildschirmen im WordPress-Administrator erstellen oder die Verwaltungsbildschirme anpassen, möchten Sie möglicherweise Links zu den Verwaltungsbildschirmen hinzufügen. Auch hier sollten Sie Ihre URLs nicht hartcodieren, sondern einen dieser Tags verwenden:

  • admin_url () ruft eine URL im Administrator ab (gibt sie jedoch nicht aus). Sie müssen den Pfad zur URL als Parameter angeben. Bei Bedarf können Sie auch das Schema angeben. Um beispielsweise die URL für den Bildschirm auszugeben, um einen neuen Beitrag zu erstellen, würden Sie dies verwenden echo admin_url ('post-new.php');.
  • get_admin_url () ist ähnlich wie admin_url () unterstützt jedoch Netzwerke mit mehreren Standorten: Sie können die Blog-ID als Parameter angeben.
  • edit_post_link () Zeigt einen Link zur Bearbeitungsseite für einen Beitrag an. Es kann in der Schleife oder außerhalb der Schleife mit der Post-ID als Parameter verwendet werden.
  • get_edit_post_link () ruft den Link zum Bearbeitungsbildschirm eines Beitrags mit der Beitrags-ID als Parameter ab.

Abrufen von Dateien in Ihren Plugin- und Designordnern

Genau wie beim Codieren von URLs in den Front-End- oder Admin-Bildschirmen sollten Sie auch URLs und Pfade korrekt codieren, wenn Sie auf Dateien in Ihren Plug-in- oder Designordnern verweisen. 

Hier sind zunächst die Funktionen, die Sie in Themendateien verwenden sollten:

  • get_stylesheet_directory () Ruft den vollständigen Serverpfad (nicht die URL) für das Verzeichnis des aktuell aktivierten Themas ab. Verwenden Sie diese Option, um Include-Dateien aufzurufen, anstatt Verknüpfungen auszugeben.
  • get_stylesheet_directory_uri () Ruft die URL für das aktuell aktivierte Design ohne nachstehenden Schrägstrich ab. Verwenden Sie diese Option in Vorlagendateien, um in Ihrem Themenordner gespeicherte Ressourcen abzurufen. Verwenden Sie beispielsweise, um ein Bild anzuzeigen, das im Bilderordner Ihres Themas gespeichert ist .
  • get_bloginfo ('stylesheet_directory') Ruft die URL für das aktuell aktivierte Design ab: using get_stylesheet_directory_uri () ist ordentlich.
  • get_template_directory_uri () ist ähnlich wie get_stylesheet_directory_uri () Wenn Sie jedoch ein untergeordnetes Design verwenden, wird die URL für das übergeordnete Design abgerufen. Ähnlich, get_template_directory () funktioniert genauso wie get_stylesheet_directory () aber für das übergeordnete Thema.

Es gibt auch Funktionen zur Verwendung in Plugin-Dateien:

  • plugins_url () ruft die absolute URL zum Plugins-Verzeichnis ab (ohne nachstehenden Schrägstrich). Es sind zwei optionale Parameter erforderlich: der nach der URL hinzuzufügende Pfad und das Plugin, zu dem die URL relativ sein soll.
  • plugin_dir_url () Ruft die URL für das Verzeichnis ab, in dem sich eine Datei befindet (mit einem nachgestellten Schrägstrich), wobei diese Datei als Parameter angegeben ist. Normalerweise würden Sie verwenden __DATEI__ als Parameter zur Bezeichnung der aktuellen Datei.

Hier ist ein Beispiel von jedem der oben genannten. Erstens, um die URL für eine Datei im aktuellen Plugin-Verzeichnis abzurufen:

plugins_url ('includes / myfile.php', __FILE__);

Und um dieselbe URL mithilfe von zu erhalten plugin_dir_url ():

plugin_dir_url (__FILE__). 'umfasst / meineDatei.php';

Beachten Sie, dass Sie beim zweiten Beispiel den Pfad nach der Funktion ausdrücken müssen: Ich bevorzuge den ersten, da es besser aussieht. Vergiss nicht, dass die Sekunde einen nachgestellten Schrägstrich zurückgibt und der erste nicht.

Stylesheets und Skripts abrufen

Sie sollten niemals Links zu Stylesheets und Skripten in Ihren Vorlagendateien oder Plugins fest codieren: Verwenden Sie stattdessen eine Funktion und hängen Sie sie an den richtigen Hook an. Dies vermeidet Probleme beim Verschieben von Dateien, stellt sicher, dass Sie die richtigen Skripts ohne Duplizierung verwenden und ist außerdem effizienter.

Um ein Stylesheet aufzurufen, verwenden Sie wp_register_style () und wp_enqueue_style () in einer Funktion und haken Sie es an wp_enqueue_scripts Haken. Die folgende Funktion würde dies in einem Plugin tun:

Beachten Sie, dass ich verwendet habe __DATEI__ Dies gibt WordPress an, dass der Pfad zum Stylesheet relativ zur aktuellen Datei ist.

Das Aufrufen eines Skripts ist ähnlich, wird jedoch verwendet wp_register_script () und wp_enqueue_script () in Ihrer Funktion und hängt diese an die wp_enqueue_scripts Haken. Das folgende Beispiel registriert ein neues Skript und ruft es auf:

function register_my_scripts () wp_register_script ('my_script', plugins_url ('/js/script.js', __FILE__)); wp_enqueue_script ('mein_script');  add_action ('wp_enqueue_scripts', 'register_my_scripts');

Wenn Ihr Skript ein mit WordPress gebündeltes Skript wie jQuery verwendet, müssen Sie es nicht registrieren. Einfach wie folgt einreihen:

function register_my_scripts () wp_enqueue_script ('my_script', plugins_url ('/js/script.js', __FILE__), 'jquery', 'true');  add_action ('wp_enqueue_scripts', 'register_my_scripts');

Lesen Sie mehr über die wp_enqueue_scripts In diesem Tutorial erfahren Sie, wie Sie JavaScript und CSS in Ihre Designs und Plugins einfügen.

Zusammenfassung

Hoffentlich habe ich Sie davon überzeugt, dass hartcodierte URLs in WordPress eine schlechte Idee sind: Sie kann in Zukunft zu allen möglichen Problemen führen und ist weniger effizient. Je nachdem, wo Sie einen Link erstellen müssen, bietet WordPress eine Funktion zum Ersetzen von fest codierten URLs in Ihren Designs oder Plugins. Sie können Funktionen und Vorlagen-Tags verwenden, um auf Seiten im Frontend Ihrer Site, einschließlich der Startseite, auf Bildschirme des WordPress-Administrators und auf Dateien in Ihren Vorlagen oder Plugins zu verweisen.