Relative URL’s in Wordpress

relative-urls-wordpress
Inhaltsverzeichnis

Relative URL’s für deine WordPress Seite

Information: Wie immer werden im Artikel 2 Optionen erläutert. Für diejenigen unter euch die direkt die Plugin Lösung suchen, bitte gleich ans Ende scrollen.

Minimalismus ist nicht nur in der Lebensgestaltung und beim Thema Design ein großer Trend, er gilt auch nach wie vor für besonders effektive Programmierung und damit eben auch für Blogs und Web Worker. Weniger ist mehr, heißt es so schön, doch wer alles minimiert hat, findet kaum noch Platz für weitere Kürzungen. Oft vergessen, dabei aber sehr effektiv, sind die sogenannten Relative URL’s.

Mit Relative URL’s sind Links innerhalb des eigenen Blogs nicht nur deutlich effizienter, sondern eben auch minimaler. Im Quelltext spart das einiges an Platz und schlussendlich sind Relative URL’s in Wordpress daher Teil der Performance-Optimierung. Mehr zum Thema gibt es jetzt hier im Artikel.

Was ist eine relative URL?

Im Grunde ist das mit den Relative URL’s ganz einfach, denn sie verzichten auf die Angabe einer Domain innerhalb des eigentlichen Links. Normalerweise würde ein Link auf die Unterseite zur Performance hier auf FastWP nämlich so aussehen.:

<a href="https://fastwp.de/magazin/wordpress-performance"></a>

Wäre dieser Link nun aber mit einer Relative URL umgesetzt, könnte ich auf die Angabe der Domain komplett verzichten. Relative URL’s gehen davon aus, dass die Domain immer die Grundlage, also das Hauptverzeichnis ist, und somit kann auf dieses Element komplett verzichtet werden. Derselbe Link sähe mit einer Relative URL also so aus:

<a href="/magazin/wordpress-performance"></a>

Die Relative URL ist demnach deutlich kürzer, da dass “/” immer als Pfadangabe gilt und somit die Domain ersetzt. Das hat ein paar Vorteile und ein paar wenige Nachteile, die wir uns nun noch einmal genauer ansehen und besprechen wollen. Was können Relative URL’s im Alltag leisten und warum sollte ein Blog sie nutzen? Aber vor allem, wie lassen sich Relative URL’s in Wordpress eigentlich umsetzten? Fangen wir mal ganz am Anfang an und klären die Vorteile solcher URL’s innerhalb von Wordpress.

Vorteile von relativen URL’s?

Nun gibt es bei der Verwendung von relativen URL’s ein paar nicht zu unterschätzende Vorteile. Der größte Vorteil ist und bleibt, dass die gesamte Domain fehlt, der Link deshalb deutlich kürzer, der Aufruf viel schneller wird. Mit relativen URL’s sind also pauschal einfach mal flotter unterwegs und durch die kurze Schreibweise reduziert sich, je nach Anzahl der Links innerhalb einer Seite, noch einmal die Zeichenzahl im Quelltext. Zum Teil sogar enorm, weil verlinkte Bilder etc. ja ebenfalls relative URL’s nutzen.

Alles also sehr effektiv für eine gute Performance. Ein weiterer Vorteil ist, dass die Links immer gleich bleiben und weiterhin funktionieren, auch wenn sich die Domain mal ändern sollte. Da die Adresse gar nicht angegeben ist, wird immer das Hauptverzeichnis, also die Domain selbst hinzugezogen, weshalb ein Wechsel oder Umzug von Wordpress keine Probleme mehr verursacht.

Wenn ich Links mit einer Relative URL innerhalb einer lokalen Testumgebung anlege, funktionieren diese auch Problemlos in der Live-Umgebung, da sie keine Domain und auch keinen Localhost oder ähnliches enthalten. Für mich persönlich ist und bleibt der größte Gewinn aber: Relative URL’s sind in Wordpress einfach schneller, minimaler und verzichten auf überflüssige Zeichen. So wenig wie möglich, so viel wie nötig. Wenn ich reduzieren kann, dann möchte ich das auch sehr gerne.

Relative URL’s in Wordpress

Doch wie können Relative URL’s auch in Wordpress genutzt werden? Super einfach! Dazu müsst ihr nur entsprechende Parameter setzten, um die Links wiederum automatisch zu bearbeiten. Mit einem Snippet für euer Wordpress Theme ist das problemlos realisierbar. Das kürzt den Domainnamen heraus, macht aus den Absolute URL’s ganz schnell Relative URL’s, setzt Filter in allen Bereichen ein, damit auch wirklich alle Links umgewandelt werden.

Natürlich nur temporär, denn wer das Snippet deaktiviert hat wieder die alten URL’s. Zu den einzelnen Filtern lest ihr weiter unten noch ein paar Hinweise, jetzt gibt es erst einmal den Code für relative URL’s in Wordpress.

Folgendes in die functions.php einfügen:

function make_href_root_relative($input) { return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input); } function root_relative_permalinks($input) { return make_href_root_relative($input); }

add_filter( 'day_link', 'root_relative_permalinks');
add_filter( 'year_link', 'root_relative_permalinks');
add_filter( 'post_link', 'root_relative_permalinks');
add_filter( 'page_link', 'root_relative_permalinks');
add_filter( 'term_link', 'root_relative_permalinks');
add_filter( 'month_link', 'root_relative_permalinks');
add_filter( 'search_link', 'root_relative_permalinks');
add_filter( 'the_content', 'root_relative_permalinks');
add_filter( 'the_permalink', 'root_relative_permalinks');
add_filter( 'get_shortlink', 'root_relative_permalinks');
add_filter( 'post_type_link', 'root_relative_permalinks');
add_filter( 'attachment_link', 'root_relative_permalinks');
add_filter( 'get_pagenum_link', 'root_relative_permalinks');
add_filter( 'wp_get_attachment_url', 'root_relative_permalinks');
add_filter( 'post_type_archive_link', 'root_relative_permalinks');
add_filter( 'get_comments_pagenum_link', 'root_relative_permalinks');

relative URL`s mit Plugin

Selbstverständlich lässt sich das ganze auch wieder mit einem Plugin umsetzen. Aktuell scheint es hier 2 funktionierende Lösungen zu geben.

Plugin 1: Absolute Relative URL`s von Andrew Patterson

aktive Installationen: 2000+ (01.06.2019)

Bewertungen: 3 (5 Sterne)

download Plugin

Plugin 2: Relative URL von Thunghsiao Liu

aktive Installationen: 6000+ (01.06.2019)

Bewertungen: 22 (4,5 Sterne)

download Plugin

Probleme mit relativen URL’s

Nun ist aber, wie es nun einmal immer so ist, nicht alles Gold was glänzt. Relative URL’s können bei komplexen Blogs und Portalen auch Probleme verursachen und wer viele Plugins im Einsatz hat, muss den Code eventuell noch ergänzen, damit durch Plugins veränderte oder erzeugte Links ebenfalls in Relative URL’s verwandelt werden.

Auf der anderen Seite können auch die Filter oben Probleme verursachen, weshalb ihr unter Umständen den ein oder anderen davon entfernen müsst. Auch könnt ihr natürlich die Filter entfernen, die auf eurem Blog gar nicht gebraucht werden. Auch der “the_content” Filter ist nicht immer angebracht, da er in manchen Themes zu viel umwandelt.

Meine Empfehlung ist hier: Kopiert das Snippet, schaut ob alles funktioniert, passt es nach und nach an und entfernt alles was nicht gebraucht wird, um es möglichst minimal zu halten. Vor allem gilt es nach der Aktivierung von Relative URL’s in Wordpress aber, zunächst jede Stelle des eigenen Blogs zu kontrollieren.

Bitte auch nicht vergessen, dass die Relative URL nur direkt im Quelltext sichtbar ist, da der Browser im Link automatisch die Domain hinzufügt. Also nicht wundern, wenn der Link wie immer aussieht. Erst im Quelltext offenbart sich, dass die Links in Wordpress nun alle Relative URL’s verwenden und damit deutlich kürzer ausfallen.

Artikel Update: 01.06.2019

Christian Pust
WordPress & Onlinemarketing Experte mit über 15 Jahren Erfahrung. Entwickler & CEO von Trackboxx – der Google Analytics Alternative.

9 Antworten

  1. Hi Christian.

    Danke für die Anleitung!! Muss die geschweifte Klammer hinter “($input);” nicht ganz ans Ende?

    Woran erkenne ich denn, dass die URLS richtig ersetzt wurden?

    Bei mir sieht alles noch recht unverändert aus. Oder gilt das nur für zukünftige Artikel?

    VG
    Marco

    1. Hi Marco, ich habe das Snippet gerade noch mal getestet – passt und funktioniert. Ganz wichtig, direkt im Quellcode dann prüfen – dort sollte die URL dann entsprechend angepasst sein.
      Das Snippet überarbeitet alle vorhandenen internen links.

      Sollte der hier aufgezeige Code tatsächlich nicht funktionieren, versuch mal bitte noch mal folgenden:

      function make_href_root_relative($input) { return preg_replace(‘!http(s)?://’ . $_SERVER[‘SERVER_NAME’] . ‘/!’, ‘/’, $input); } function root_relative_permalinks($input) { return make_href_root_relative($input); } add_filter( ‘the_permalink’, ‘root_relative_permalinks’ );

      add_filter( ‘day_link’, ‘root_relative_permalinks’);
      add_filter( ‘year_link’, ‘root_relative_permalinks’);
      add_filter( ‘post_link’, ‘root_relative_permalinks’);
      add_filter( ‘page_link’, ‘root_relative_permalinks’);
      add_filter( ‘term_link’, ‘root_relative_permalinks’);
      add_filter( ‘month_link’, ‘root_relative_permalinks’);
      add_filter( ‘search_link’, ‘root_relative_permalinks’);
      add_filter( ‘the_content’, ‘root_relative_permalinks’);
      add_filter( ‘the_permalink’, ‘root_relative_permalinks’);
      add_filter( ‘get_shortlink’, ‘root_relative_permalinks’);
      add_filter( ‘post_type_link’, ‘root_relative_permalinks’);
      add_filter( ‘attachment_link’, ‘root_relative_permalinks’);
      add_filter( ‘get_pagenum_link’, ‘root_relative_permalinks’);
      add_filter( ‘wp_get_attachment_url’, ‘root_relative_permalinks’);
      add_filter( ‘post_type_archive_link’, ‘root_relative_permalinks’);
      add_filter( ‘get_comments_pagenum_link’, ‘root_relative_permalinks’);

  2. Funktioniert teilweise, aber immerhin. Bei srcset*s klappt es bei mir nicht. Ansonsten ist es natürlich schon fragwürdig wenn eine Seite die sich “FAST” nennt bei google´s web.dev in der Kategorie “Performance” bei diesem Artikel nur magere 28% erreicht 😉

  3. Ach wie schön. Kommentare sind erlaubt, aber wenn es auch mal kritisch wird, dann wird ganz schnell zensiert. Ihr habt das Jahr 2019 ja wirklich verstanden. 🙂

    1. Hi Hans, wir schalten hier aufgrund “Spam” immer noch per Hand jeden einzelnen Kommentar frei…..willkommen in 2019. Auch kritische Kommentare werden veröffentlicht. Soweit nun erst einmal zu deinem 2. Statement.
      Zu deiner 1. Aussage und der Performance. Ich weiß nicht was daran “fragwürdig” ist. Dieser Blog verwendet ist grundsätzlich auf Performance optimiert. Unabhängig davon verwenden wir PopUps, Google Adsense und weitere Dienste. Du bist angehalten eine WP Seite aufzusetzen die unter Verwendung dieser Dienste eine akzeptable Punktzahl bei Google Page Speed Insights erreicht 🙂 (Ich gehe jetzt nicht noch auf Sinn und Unsinn der Google Page Speed Insights Daten ein)
      Ich persönlich wäre im Deutschen Raum eher dafür zu haben dass weniger “Kritik” für wirklich nebensächliche Aspekte geäußert wird – das nervt nämlich ungemein. Im Verhältnis wird unglaublich gerne kritisiert (siehe in diesem Beispiel dass wir dir als Blog nicht “grün” genug bei Google Page Speed Insights sind…), aber dass im Gegenstück – also das auch genauso viele “Danksagungen” kommen für die mittlerweile über 900 Artikel hier im Blog…dann doch lieber 2 Kommentare wie hier von dir abgegeben…. Sorry, musste mal raus.

    1. bzw. man kann auch direkt die Funktion wp_make_link_relative angeben. Das würde dann so aussehen:
      add_filter(‘day_link’, ‘wp_make_link_relative’);
      add_filter(‘year_link’, ‘wp_make_link_relative’);
      add_filter(‘post_link’, ‘wp_make_link_relative’);
      add_filter(‘page_link’, ‘wp_make_link_relative’);
      add_filter(‘term_link’, ‘wp_make_link_relative’);
      add_filter(‘month_link’, ‘wp_make_link_relative’);
      add_filter(‘search_link’, ‘wp_make_link_relative’);
      add_filter(‘the_content’, ‘wp_make_link_relative’);
      add_filter(‘the_permalink’, ‘wp_make_link_relative’);
      add_filter(‘get_shortlink’, ‘wp_make_link_relative’);
      add_filter(‘post_type_link’, ‘wp_make_link_relative’);
      add_filter(‘attachment_link’, ‘wp_make_link_relative’);
      add_filter(‘get_pagenum_link’, ‘wp_make_link_relative’);
      add_filter(‘wp_get_attachment_url’, ‘wp_make_link_relative’);
      add_filter(‘post_type_archive_link’, ‘wp_make_link_relative’);
      add_filter(‘get_comments_pagenum_link’, ‘wp_make_link_relative’);

      Das Snippet wurde erfolgreich mit der derzeit aktuellsten WP-Version 5.8 getestet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dich auch interessieren

Du benötigst Unterstützung bei deinem WordPress Projekt?

Dein Ansprechpartner
Christian