WordPress: get_template_part() in Shortcodes

Die Funktion get_template_part gehört bei der WordPress-Theme-Entwicklung zu der wohl am meisten verwendeten Funktion. Sie erlaubt es euch, mehrfach benötigte Code-Blöcke an einem zentralen Punkt zu verwalten und flexibel und ohne großen Aufwand im Theme zu verwenden. Mit einem Shortcode steht diese Funktion auch im WordPress Editor zur Verfügung.

Template-Parts mit Shortcode laden

Wenn ihr im Inhaltsbereich ein Template-Part laden möchtet, kann dies ganz einfach mit folgendem Code lösen. Er wird in euere functions.php eingefügt.

function placeholder_shortcode( $attr ) {
    ob_start();
    get_template_part( 'path/to/placeholder-part' );
    return ob_get_clean();
}
add_shortcode( 'placeholder', 'placeholder_shortcode' );

Alles was hier mit »placeholder« ausgezeichnet ist, ändert ihr einfach für euren Anwendungsfall ab. Wichtig ist hier, dass die Eingabe bei get_template_part() mit dem Dateinamen eures »Template-Parts« übereinstimmt.

Erläuterung zum Shortcode

Innerhalb der Funktion placeholder_shortcode() definieren wir mit der PHP-Funktion ob_start() die Ausgabepufferung. Das bedeutet, dass alle Inhalte (bis auf die Header-Informationen) erst einmal auf dem Server zwischengespeichert werden und nicht direkt an den Client übergeben werden.

In der nächsten Zeile verwenden wir nun unsere bekannte Funktion get_template_part(), um anzugeben, welche Templatedatei wir laden bzw. verwenden möchten.

Im letzten Schritt innerhalb unserer Funktion müssen wir das Script dazu auffordern die Inhalte aus der Templatedatei auszugeben – dies machen wir mit dem PHP-Befehl ob_get_clean(). Dieser Befehl liest und gibt nicht nur unseren Inhalt aus, sondern beendet die Ausgabepufferung (Zwischenspeicherung). Mehr Informationen zu den PHP-Funktionen der Ausgabepufferung findet ihr in der offiziellen Dokumentation von PHP.

Im letzten Schritt definieren wir noch, wie der Shortcode heißen soll bzw. mit welchem Befehl er anschließend in WordPress-Editor verwendet werden kann. Im oben gezeigten Beispiel müsstet ihr [placeholder] im Editor schreiben, um den Shortcode auszuführen.

Beispiel: Ausgelagerte Kontaktinformationen

Das folgende Beispiel verdeutlicht die Anwendung. Wir möchten unsere Kontaktinformationen zentral speichern und mithilfe des Shortcodes [contact] in der gesamten Webseite verwenden können.

1. Template-Part erstellen

Im ersten Schritt müssen wir eine Template-Datei erstellen, in der wir den Inhalt definieren, welcher später auf der Webseite angezeigt werden soll.

<section class="contact">
    <h2>Kontaktinformationen</h2>
    <p>Max Mustermann</p>
    <a href="mailto:info@kulturbanause.de">E-Mail schreiben</a>
</section>

Im Anschluss müssen wir die Template-Datei noch im Shortcode einbinden. Anschließend steht uns der Shortcode im WordPress-Editor zur Verfügung.

function contact_shortcode( $attr ) {
    ob_start();
    get_template_part( 'pfad/zum/contact-template' );
    return ob_get_clean();
}

add_shortcode( 'contact', 'contact_shortcode' );

2. Verwendung in WordPress-Editor

Nachdem wir unser Template erstellt und den Shortcode definiert haben, können wir uns im System einloggen und eine beliebige Seite oder einen Post mit dem WordPress-Editor öffnen.

Classic Editor

Wenn wir den Classic-Editor verwenden, geben wir den Namen unseres Shortcodes einfach innerhalb von eckigen Klammern ein – das Ganze sollte dann so aussehen:

Shortcode [contact] im Classic Editor.

Block Editor (Gutenberg)

Wir verwenden in unserer WordPress Installation den Gutenberg Editor. Dieser stellt uns von Haus aus einen Block namens »Shortcode« zur Verfügung. Wir fügen diesen auf unserer Seite ein und geben dort, wie auch im Classic Editor, unseren Shortcode in eckigen Klammern ein.

Shortcode Block mit dem Befehl [contact] im Gutenberg Editor

3. Ergebnis

Nachdem wir die Seite gespeichert haben, können wir diese im Frontend aufrufen und sollten nun den Inhalt unseres Template-Parts sehen.

Ausgabe im Frontend der Webseite

Geschrieben von kulturbanause Team

Benutzerbild

Beiträge bei denen das kulturbanause-Team als Autor angegeben ist, wurden von mehreren Personen in Zusammenarbeit geschrieben. Wir nutzen diesen Blog als öffentliches Archiv und um euch bei alltäglichen Problemen im Zusammenhang mit der Erstellung von Websites zu helfen. Neben diesem Blog bieten wir auch Trainings wie Schulungen, Bücher oder Videos an. Und natürlich unterstützen wir auch gerne im Rahmen unserer Agenturtätigkeit.

Feedback & Ergänzungen – 6 Kommentare

  1. fwolf
    schrieb am 13.09.2021 um 21:48 Uhr:

    Ach, wenn du das Ganze noch richtig geil erweitern willst: Die an den Shortcode übergebenen Attribute auch noch in den local scope des Templates übernehmen (ab WP 5.5):

    z.B. a la
    get_template_part( $template, '', $attr )

    und dann im Template mit
    if( !empty( $attr ) ) { extract( $attr, EXTR_SKIP ); }
    in den local scope des Templates (bzw. get_template_part) schubsen :)

    cu, w0lf.

    Antworten
  2. the_bavarian
    schrieb am 14.07.2021 um 20:37 Uhr:

    Gruselig. Erst letztens saß ich am Kuchentisch meiner Großeltern und meinte so: „Es wär doch toll wenn jemand eine Anleitung zur Verwendung von get_template_part() in shortcodes schreiben würde!!“ Die haben nur genickt und mir Kaffee eingegossen. Glaub die warn nur stolz aber ham nix kapiert. Wer weiß. Trotzdem danke für das Fundstück am Montag danach.

    Antworten
  3. Kirsten Schelper
    schrieb am 09.07.2021 um 12:54 Uhr:

    Läuft!
    ;o)

    Antworten
  4. Kirsten Schelper
    schrieb am 07.07.2021 um 10:35 Uhr:

    Ich habs gerade mal ausprobiert, ich krieg’s nicht zum Laufen.
    template_part erscheint nicht.

    Könnte es am Pfad liegen? Wird die template_part-Datei nicht gefunden, wenn ich einen relativen Pfad angebe? Fehlermeldung krieg ich keine.

    Antworten
    • Konstantin Hanke
      schrieb am 08.07.2021 um 07:56 Uhr:

      Hallo Kirsten, in den PHP-Beispielen hatte sich ein Fehler eingeschlichen. Innerhalb der Funktion add_shortcode() fehlte ein Anführungszeichen. Ohne dieses geht es natürlch nicht. Ich habe die Beispiele korrigiert, selbst nochmal getestet und kann bestätigen, dass das so funktioniert.

      Antworten
      • Kirsten Schelper
        schrieb am 08.07.2021 um 09:32 Uhr:

        Danke!
        Den Fehler hatte ich gesehen (bzw. Visual Studio hat’s gemerkt). Es klappte aber trotzdem nicht.
        Ich schau bei Gelegenheit noch mal.

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →