WordPress & Webwork

Einen eigenen WordPress-Shortcode erstellen und an der richtigen Stelle ausgeben

Wie erstellt man in WordPress einen eigenen Shortcode und wie wird der auch an der richtigen Stelle ausgegeben?

Shortcodes sind meiner Ansicht nach Fluch und Segen zugleich. Zum einen sind sie eine wirklich prima Möglichkeit komplexe Inhalte "einfach" in einem Artikel oder auf einer Seite einzufügen. Sehr viele Plugins bieten die Möglichkeit an ihre Inhalte per Shortcode einzubinden.

Die Kehrseite der Medaille ist allerdings, dass der Shortcode nicht mehr funktioniert, wenn man das Plugin deaktiviert oder sogar entfernt, weil man vielleicht einen besseren Ersatz gefunden hat. Es kann somit sehr mühsam sein "alte" Shortcodes zu entfernen oder aber — die andere Alternative — man schleppt Altlasten-Plugins mit, nur damit die Shortcodes in alten Artikeln noch weiter funktionieren.

Trotzdem gibt es Situationen, in denen Shortcodes sehr hilfreich sind, gerade auch für Redakteure, die ihre Arbeit beim Erstellen von Artikeln möglichst "simpel" halten möchten. Es gibt aber auch andere Situationen, in denen Shortcodes einfach eine prima hilfreiche Sache sind.

Ein sinnvoller Einsatz ist z. B. die Nutzung von Shortcodes mit Textbausteinen — ja, ich weiß es gibt dafür auch andere Möglihchkeiten. Aber mit einem Shortcode kann man sich diese — relativ einfach — selber machen.

Dafür erweitert man seine functions.php um folgenden Code:

function textbaustein() {
    return '<h3>Mein immer gleicher Text</h3>
    Er kann sogar HTML enthalten.';
}

add_shortcode('tbs', 'textbaustein')

Man nutzt hierbei die Funktion add_shortcode, wobei man das ganze auch noch (bei Bedarf) mit Variablen ergänzen kann. Wichtig ist hierbei übrigens das return als Ausgabe und nicht echo, damit der Text auch wirklich erst an der Stelle ausgegeben wird, an der der Shortcode [tbs] eingefügt wurde. Er landet nämlich andernfalls vor dem Inhalt.

Und genau das passiert auch wenn man anstatt eines Textes z. B. per PHP ein Plugin oder aber auch eine WordPress-Funktion aufrufen möchte. Deswegen muss man hierbei eine Ausgabepufferung mit einbauen:

function eine_funktion() {
  ob_start();
  wp_funktion();
  return ob_get_clean();
  }
add_shortcode('funktion', 'eine_funktion');

Code via Konstantin Kovshenin

Nur so erfolgt die Ausgabe an der Stelle des eingefügten Shortcodes und nicht unmittelbar vor dem Inhalt.

7 Reaktion(en)

  1. David

    Hi Vladimir, ich danke dir für den hilfreichen Artikel. Ich persönlich finde [shortcodes][/shortcodes] sehr hilfreich. Da meine meisten Kunden jedoch Berührungsängste mit (komplexen) [shortcodes][/shortcodes] haben, kann ich diese nur in Ausnahmefällen verwenden.

    Weißt du zufällig ob es für Benutzerdefinierte Shortcodes eine Möglichkeit gibt, ein UI-Element zu erstellen? (ähnlich wie es WP bis vor kurzen bei Bildern gemacht hat)
    Vieleicht weißt du ja mehr…
    Danke schonmal

  2. Pingback: WordPress-Newsletter Nr. 162 | perun.net

  3. Pingback: WordPress-Newsletter Nr. 175 » perun.net

Schreibe einen Kommentar

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