Für Menschen · Seien Sie begeistert und Sie werden begeistern !
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.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
1. September 2010 um 14:59
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!
1. September 2010 um 16:51
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
2. September 2010 um 13:03
Hab gerade erst gelernt wie man "Shortcodes" überhaupt in WP einsetzt. Werd mir den Artikel gleich nochmal durchlesen und dann probieren =)
2. September 2010 um 20:59
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
10. September 2010 um 13:19
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!
16. September 2010 um 20:11
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!
19. September 2010 um 00:46
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.
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?
Gruß und vielen Dank,
Pascal
19. September 2010 um 19:34
@Pascal: auch dazu ist ein Beispiel im Text - wobei das Custom Field mit dem Namen
example-nameabgerufen wird. was da drin steht, ist dann in der Übergabe beido_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 . ']');
22. September 2010 um 20:26
Ah, ich hab's hinbekommen. Vielen Dank!
2. Oktober 2010 um 18:57
Danke für den Tipp... Ich habe eine umfangreiche Webseite mit WordPress... Auf dieser Seite kann sowas echt nützlich sein.
13. Dezember 2010 um 09:23
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!
13. Dezember 2010 um 11:09
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. Dezember 2010 um 13:02
@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.
13. Dezember 2010 um 15:01
@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
14. Dezember 2010 um 19:08
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.
15. Dezember 2010 um 14:45
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.
15. Dezember 2010 um 23:13
@Timm: das realisiere ich via javascript und füge den Inhalt dann in die textarea ein.
16. Dezember 2010 um 14:52
Danke Frank. Klappt alles bestens. Danke dafür.
2. Februar 2012 um 19:02
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'] . ']');?>2. Februar 2012 um 22:39
Gelöst! Hab es selbst hinbekommen nach drei Tagen! *G*