WordPress Tricks

Wie man in Wordpress Shortcodes für Permalinks erstellt

WordPress Tipps & Tricks 15. Februar 2010 7 Kommentare
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.

<a href="http://www.michaeloeser.de/angebot">Angebot</a>

Wesentlich besser ist es, wenn man dazu eine Funktion verwendet

<a href="<?php echo get_permalink(12); ?>">Angebot</a>

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 "<a href=’$url’>$text</a>";
    } 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.

<a href="[permalink id=49]">Linktext</a>

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.

<a href="[permalink id=49]" class="red">Linktext</a>

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.

Weitere interessante Artikel

7 Kommentare zu “Wie man in Wordpress Shortcodes für Permalinks erstellt”

  1. Maggy sagt:

    Hallo Michael
    Ich bin ein Fan deiner Theme, habe allerdings seit dem Update auf die Version 4.2 eine Fehlermeldung die ich nicht wegbekomme.
    Warning: printf() [function.printf]: Too few arguments in xxxx/themes/branfordmagazine/includes/comments2.php on line 55
    Kannst du mir vielleicht behilflich sein, wie ich die ändern muss, das das Schreiben von Kommentaren wieder klappt.

    Besten Dank für die Hilfe.

  2. Adrian sagt:

    Okay, mag stimmen. ;-) Ich gehe da auch als schlechtes Beispiel voran… :-D
    Aber deine Lösung muss auch irgendwie einfacher gehen: Mir zu jedem Beitrag immer erst die ID rauszusuchen, würde ich mega aufwendig finden…

  3. funkygog sagt:

    Vielen Dank Michael für diesen Tipp.
    Damit es funktioniert muss man noch die ‘Anführungszeichen’ ändern. Aber dann klappt es tadellos. Super!

  4. Adrian sagt:

    Interessante Idee und durchaus berichtenswert.
    Allerdings stellt sich mir hierbei dir Frage, ob das wirklich so notwendig ist. Denn wer klug ist, der ändert seine Permalink-Struktur ja eh nie. ;-)

    • Michael Oeser sagt:

      Naja, es kann im Laufe eines Websitelebens schon mal sein, dass man die ändert. Z.B. wenn man nicht von Anfang an die “richtige” Struktur gewählt hat. Muss man halt etwas geplant machen, dann schadet es auch nicht.