Michael Oeser - Fotografie, Film, Webdesign - Logo

Wie man in WordPress Shortcodes für Permalinks erstellt

Hin und wieder kommt es vor, dass man einen internen Link manuell in eine Seite einbauen muss. Ein typisches Beispiel hierfür sind die „Kontakt aufnehmen“ Buttons auf meiner „Angebot“ Seite. Im grunde ist das natürlich sehr einfach, wenn man sich keine Gedanken über Serverumzug oder sonstige Dinge machen muss, die dazu führen, dass sich die URL einer Seite ändern kann. Wenn man aber sichergehen will für solche Eventualitäten gewappnet zu sein, dann solte man etwas tiefer in die Trickkiste greifen.

Grundlagen für interne Links

Keine wirklich optimale Lösung ist es, die Links komplett „hard-coded“ in den Text zu schreiben.

Angebot

Wesentlich besser ist es, wenn man dazu eine Funktion verwendet

Angebot

Die „12“ ist hierbei die ID der Seite. Warum ist das besser?

  • Solte sich die URL ändern, funktioniert es trotzdem
  • Wechselt man die Domain (oder Subdomain), funktioniert es trotzdem

Auf diese Weise legt man einen permanenten Verweis auf die Seite an, der sich nie ändert. Das einzige Problem bei der Sache ist, dass man standardmäßig keinen PHP Code in Artikeln oder Seiten ausführen und somit die get_pemalink Funktion auch nicht nutzen kann. Natürlich gibt es Plugins, die das ermöglichen, aber ich will hier mal einen anderen Weg zeigen.

Eigener Shortcode

Das Problem lösen wir, indem wir uns einen eigenen Shortcode bauen. Shortcode wird häufig von Plugins verwendet, um bestimmten Code innerhalb von Seiten auszuführen (z.B. Kontaktformulare).

Platzieren Sie folgenden Code in Ihre functions.php:

function my_permalink($atts) {
	extract(shortcode_atts(array(
		'id' => 1,
		'text' => ""  // Standardwerte
    ), $atts));
    
    if ($text) {
        $url = get_permalink($id);
        return "$text";
    } else {
	   return get_permalink($id);
	}
}
add_shortcode('permalink', 'my_permalink');

Benutzung des Shortcodes

Dieser Shortcode kann nun auf zwei unterscheidliche Weisen im Seitentext verwendet werden.

Linktext

Auf diese Weise wird nur der ID Parameter übergeben (die 49 ist die Seiten ID) und auch nur die URL zurückgeliefert. Das kann sinnvoll sein, wenn man z.B. zusätzlich eine CSS Klasse übergeben will. Also z.B.

Linktext

Die zweite Variante ist die vollständige Übergabe des Links inklusive Text.

[permalink id=49 text='Linktext']

So wird ein kompletter Link inklusive dem Linktext (der natürlich genauso geändert werden kann, wie die ID) ausgegeben.

Fazit

Mit dieser simplen Funktion und dem Shortcode kann man ganz einfach interne Links in Artikeln und Seiten verwenden ohne zu befürchten, dass es zu Problemen kommt, sollte sich einmal die URL des jeweiligen Links ändern. Die ID ändert sich nämlich (im Normalfall) nie.

Mehr zu Thema Shortcodes gibt es in der offiziellen WordPress Dokumentation.