Sidebar
ein-/ausblenden

WordPress Shortcodes außerhalb des Content nutzen

Plugin für WordPress SEO

Anzeige

Die Shortcode-API kann viele Möglichkeiten in den Editor holen und trotzdem die Arbeit für die Autoren übersichtlich halten. So ist mittels eines Shortcodes schnell externe Inhalte in den Content geladen. Anwendungsfälle gibt es ausreichend, wie beispielsweise die Idee der Werbung in einem Artikel zeigt.

Ab und an gibt es aber Fälle, da möchte man im Template den Shortcode nutzen oder die Daten nicht im Editor pflegen, sondern via Custom Field oder ähnliches mitgeben. Kennt man oder gibt es dafür eine Funktion im Plugin oder der Erweiterung für WordPress, dann kann man dies aber trotzdem nutzen. Eine Funktion von WordPress für den Zugriff auf Shortcodes hilft.

Der einfachste Fall ist der Zugriff auf einen Shortcode, bspw. myshortcode; erfolgt mittels der Funktion do_shortcode(). Ein Code-beispiel dazu soll es verdeutlichen; abgelegt wird es im Template - bspw. die single.php des Themes.


echo do_shortcode('[myshortcode]');

Wenn man mit Parametern arbeitet; heißt, der Shortcode kann diese Parameter verarbeiten, dann kann man diese einfach mitgeben.


echo do_shortcode('[myshortcode param="blahblahblah"]');

Aufpassen: PHP unterscheidet ' und ", daher kann es beim Laien zu Problemen kommen. Zum Beispiel würde der folgenden Aufruf nicht klappen:


echo do_shortcode('[myshortcode param='blahblahblah']');

übersichtlich und funktionierend wäre


echo do_shortcode('[myshortcode param="blahblahblah"]');

Ein weiters Beispiel nutze aus dem benutzerdefinierten Feld example-name den Wert und übergibt dies an den Shortcode example_shortcode für den Parameter product.


<?php
$example_product = get_post_meta( $post->ID, 'example-name', $single = true );
if ($example_product)
	echo do_shortcode('[example_shortcode product="' . $example_product . '"]');
?>

Daraus ergeben sich viele Möglichkeiten, so zum Beispiel auch ein einfacher Zugriff auf die Gallery, die man pro Beitrag pflegt.


echo do_shortcode('[gallery option1="value1"]');

Damit kann man im Template einfach die Gallery laden und ist unabhängig von den Shortcodes im Editor. Nebenbei spart man sich das Parsen des Filters und beim neuen Design, wenn die die Bilder wenig relevant sind, kann man diese einfach weg lassen und muss nicht den Content filtern oder den Editor vieler Beiträge bemühen. Alle weiteren Ideen überlasse ich gern euch.

20 Kommentare zu „WordPress Shortcodes außerhalb des Content nutzen“

  1. 1
    Kommentar von Tim

    Sehr praktisch. Habe letztens auch das erste mal einen Shortcode anhand deines verlinkten Tutorial/Hilfe eingebunden. War easy. Muss das System nun nur noch den anderen Bloggern Nahe bringen. Beste Grüße, Tim. PS: Super Blog!

  2. 2
    Kommentar von Nicole Bar

    Werde ich mal Testen ob das Klappt, wenn nicht muss mir mein Gatte mal helfen *hihi* bin erst seit kurzen mit WordPress Vertraut. Sonst hatte ich immer andere Systeme benutzt. Aber dein Tutorial klingt ja nicht schlecht :)

  3. 3
    Kommentar von Henry

    Hab gerade erst gelernt wie man "Shortcodes" überhaupt in WP einsetzt. Werd mir den Artikel gleich nochmal durchlesen und dann probieren =)

  4. 4
    Kommentar von Florian

    Ich bin gerade erst auf deine Internetseite aufmerksam geworden und muss sagen, ich finde es ist eine wirklich supertolle Internetseite, zumal ich zahlreiche eigene WordPress-Blogs betreibe und an diesen hin und wieder etwas verändern möchte.

    Deinen TIpp mit den Shortcodes werde ich ebenfalls einmal probieren und bei Erfolg dann umsetzen!

    Beste Grüße,
    Florian

  5. 5
    Kommentar von André

    Wenn ich sowas lese, dann scheint es so einfach und logisch, nur selbst würde ich nie drauf kommen. Aber genau deshalb lese ich ja sowas. ;-)

    Vielen Dank für die Tipps. Mit wordpress kann man ja naheztu alles umsetzten, wenn man weiß wie. Dein Blog ist ja ein Eldorado für Ideen rund um wp!

    Finde ich klasse!

  6. 6
    Kommentar von Maike

    Schöne kurze zusammenfassung für shortcodes, aber wirklich geholfen hat mir der hinweis mit dem hochkomma und gänsefüßchen, ein kleiner aber feiner unterschied, nun ist auch der php parse error gefixt. danke!

  7. 7
    Kommentar von Pascal

    Puh, ich glaube, der Artikel könnte mir echt helfen ... wenn ich mich damit besser auskennen würde.

    Ich würde gerne einen Shortcode direkt nach dem Inhalt des Artikels (single.php) aufrufen und dadurch eine Tabelle anzeigen lassen. Dabei möchte ich aber selbst beim Erstellen des Artikels entscheiden, welchen Shortcode bzw. welche Tabelle dort nach dem Artikel angezeigt wird, indem ich zum Beispiel Tabelle1 in ein Custom-Field eintippe. In dem Fall soll dann nach dem Artikel der Shortcode [Tabelle1] ausgeführt werden.

    echo do_shortcode('[Tabelle1]');

    Mit dieser Zeile kann ich schon einmal die Tabelle dort aufrufen, wo ich sie haben will. (Danke für den Code!) Wie schaffe ich es aber nun, dass anstatt Tabelle1 dort der Inhalt eines bestimmten Custom-Fields (z.B. Tabelle2 oder Tabelle3) steht? Ist das überhaupt möglich?

    echo do_shortcode('[_Inhalt eines Custom-Fields_]');

    Gruß und vielen Dank,

    Pascal

  8. 8
    Kommentar von Frank Bültge

    @Pascal: auch dazu ist ein Beispiel im Text - wobei das Custom Field mit dem Namen example-name abgerufen wird. was da drin steht, ist dann in der Übergabe bei do_shortcode()
    In deinem Fall könnte es wie folgt aussehen:

    $example_product = get_post_meta( $post->ID, 'mytable', $single = true );
    if ($$mytable)
    echo do_shortcode('[' . $mytable . ']');

  9. 9
    Kommentar von Pascal

    Ah, ich hab's hinbekommen. Vielen Dank!

  10. 10
    Kommentar von Dan

    Danke für den Tipp... Ich habe eine umfangreiche Webseite mit WordPress... Auf dieser Seite kann sowas echt nützlich sein.

  11. 11
    Kommentar von Timm

    Hallo Frank,

    Dieser Beitrag kommt gerade zum richtigen Zeitpunkt, da ich shortcodes im Quellcode nutzen möchte.
    Doch welche Parameter kann ich eingeben?
    Zum Beispiel bei einem dropcap?
    [dropcap fontsize="38" color="#CC0000"]W[/dropcap] würde dann so geschrieben werden?
    < ?php echo do_shortcode('[dropcap fontsize="38" color="#CC0000"]W[/dropcap] '); ?>

    Was ich aber bei mir gemerkt habe, ist, dass zum Beispiel < ?php echo do_shortcode('[Title fontsize="38" color="#CC0000"]Toggle comments[/title] '); ?> nicht funktioniert.
    Was mache ich falsch und wie kann ich dynamischen Code einfügen?

    Ansonsten - good job! ;)

  12. 12
    Kommentar von Timm

    Verzeihung!
    ich hatte die Maskierung nicht beachtet:
    Die Frage möchte ich nocheinmal stellen.
    "Was ich aber bei mir gemerkt habe, ist, dass zum Beispiel <?php echo do_shortcode('[Title fontsize="38" color="#CC0000"]<a style="cursor:pointer" onclick="jQuery('#comments').toggle();">Toggle comments</a>[/title] '); ?> nicht funktioniert.
    Was mache ich falsch und wie kann ich dynamischen Code einfügen?
    Sorry nocheinmal. :)

  13. 13
    Kommentar von Frank Bültge

    @Timm: sieht eigentlich gut aus, sollte klappen. Aber warum willst du Inhalte via do_shortcode() verarbeiten. Das sieht mir eher so aus, als wenn es in die Templates gehört. Denke daran, dass Shortcodes geparst werden müssen und dies kostet Last, summiert sich schnell auf.

  14. 14
    Kommentar von Timm

    @Frank:
    Wenn Du auf meine Seite gehst, siehst du, das ich eine ungefähre Lösung habe.
    Die Kommentarregeln und die Kommentarhilfe haben jeweils rechts ein Kreuz, was sich bei Klick ändert.
    Schlecht sieht es nicht aus, oder? ;)
    Nur die Auswahl bei dir zur Anzeige der Kommentarliste ist bei der Anzeige der Kommentare integriert. So möchte ich es auch haben.
    Doch das klappt irgendwie nicht. Selbst wenn, wie bekomme ich es hin, das es wie bei Dir mit +/- dargestellt wird?

    Shortcodes nutze ich, weil ich es im Moment nicht besser weiß ... ;)
    Eleganter wäre, sda hast Du Recht, die saubere XHTML-Methode.
    Deshalbe würde ich mich freuen, wenn du mir dabei helfen könntest.
    Wie oben auch schon beschrieben, habe ich die comments.php, etc, zum Download bereit gestellt.

    Auf jeden Fall. Vielen Dank.
    Timm

  15. 15
    Kommentar von Timm

    Verzeihung. Ich fdachte, ich hätte dir die Links schon gegeben (bei diesem Beitrag von Dir: jquery-und-die-horizontale-slide-funktion)
    Aber das war ein Irrtum.
    Bitte maile mich an, wenn Du Dir meine Dateien ansehen möchtest...
    Danke.

  16. 16
    Kommentar von Timm

    Hallo Frank,
    mal eine andere frage: Wiebekomme ich es hin, das es bei mir auch so funktioniert, das ich Textteile kopiere und die Möglich zum antworten bekomme?

    Vielleicht stehe ich gerade auf den Schlauch...
    Auf jeden Fall vielen Dank.

  17. 17
    Kommentar von Frank Bültge

    @Timm: das realisiere ich via javascript und füge den Inhalt dann in die textarea ein.

  18. 18
    Kommentar von Timm

    Danke Frank. Klappt alles bestens. Danke dafür.

  19. 19
    Kommentar von Benny

    Vielen Dank, bin immer wieder gern hier auf der Seite.

    Wenn ich den Code aber mit einem Meta-Box Feld nutze, erscheint nur die Fehlermeldung "Artikel wurde nicht gefunden", was auch immer das bedeutet.

    Mein Code lautet wie folgt:

    get_the_id(), TRUE); if ($meta) echo do_shortcode ('[app =' . $meta['linkid'] . ']');?>

  20. 20
    Kommentar von Benny

    Gelöst! Hab es selbst hinbekommen nach drei Tagen! *G*

Kommentare sind geschlossen.