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.