Für Menschen · Seien Sie begeistert und Sie werden begeistern !
WordPress 2.5 hat die Tagging-Funktionen ausgebaut und viele kleine Details spendiert. Dabei ist unter anderem die Shortcode API abgefallen, mit der man schnell und einfach Strings im Content mit entsprechendem Inhalt füllen kann. Damit wird das Ansprechen derartiger Möglichkeiten aus anderen Funktionen, sei es in einem Plugin oder einer Theme-Funktion einfacher.
Die Möglichkeiten von Shortcodes sind vielfältig, viele andere Applikationen lieben diese Funktion und mit der neuen Funktionalität kann man dem Kunden das Schreiben im Backend damit recht gut erleichtern. Um die Shortcodes noch in das Quicktag-Menu zu bekommen, empfiehlt sich die Verwendung des Plugin AddQuicktag.
Die Übergabe ist einfach und schnell verstanden. Eine kleine Einführung und ersichtliche Erfolge gibt es in Kurzversion in den folgenden Zeilen. Wie es genau geht und ein Plugin mit verschiedenen Beispielen gibt es bei Ozh, der derzeit auch die neue WordPress Funktion durchleuchtet.
[shortcode ]
[shortcode /]
[shortcode foo="bar" /]
[shortcode foo="bar" baz="bing" /]
[shortcode ]content[shortcode /]
[shortcode foo="bar"]content[/shortcode]
In kurzen Zügen und als kleine Übersicht hier nun die Funktionsweise, verantwortlich ist die Funktion add_shortcode(). Näheres findet man in /wp-includes/shortcodes.php, inklusive einer „kleinen“ Dokumentation.
Das folgende Beispiel, in einem Plugin oder Theme hinterlegt, sorgt dafür, dass wenn der Syntax [tag1] im Content vergeben wird, dann erscheint im Frontend, auf das Blog also, der Text Some Longer Text.
// [tag1] --> Some Longer Text
function shortcode_example() {
return 'Some Longer Text';
}
add_shortcode('tag1', 'shortcode_example');
Im Screenshot sollte das ganze dann deutlicher werden.

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
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 971 Beiträge, 19448 Kommentare in 14 Kategorien und 459 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]
29. März 2008 um 00:46
Mal wieder ne blöde Frage, ich weiß - aber was passiert eigentlich, wenn man das Plugin mit den ShortCodes dann wieder deaktiviert - also mit dem, der den SC umwandelt?
Steht der dann so im Text?
Tja - ich bleib erstmal bei der verwendung von für den Zweck sinnvollen bestehenden Tags mit rel oder class Attribut... is zwar auch nicht das gelbe vom Ei, aber wenn das Plugin mal ausfallen sollte muss man wenigstens nicht zig Posts nachbearbeiten...
Bestes Beispiel währe eine Codeansicht [code]Code[/code] mag funktionieren...
<pre class="syntax">
Code
</pre>
oder
<code lang="php">
Code
</code lang="php">
erscheint mir aber sinnvoller, wenn man nicht genau weiß, dass der Entwickler dieses Tool an jede kommende WP Version, welche man benutzen möchte, anpassen wird.
29. März 2008 um 08:55
Ist die Funktion deaktiviert, dann steht einfach nur der Tag da, ohne eine Bedeutung für den Leser.
Die Funktion muss dann immer verfügbar sein, aber so ist es ja auch bei anderen Tools, die diese Form nutzen, bsp. Textile.
29. März 2008 um 18:28
hmm so betrachtet auch wahr - und eigentlich ists ja auch dumm, ein Plugin nicht mehr einzusetzen, welches man mal verwendet hat und dann keine Alternative einzubauen... muss man sich halt nochmal um die alten Posts kümmern.
Dies API Funktion bietet dem Entwickler jedenfalls eine wesentlich angenehmere Verarbeitung, als wenn er erst jedes Hook von wordpress, welches zum Content anzeigen verwendet wird nutzen muss und dort dann entsprechendes per RegExp rausfiltern müsste.
Insofern werd ichs halt auch für mein Flickr Plugin nutzen... da will ich eh nicht, dass es jemand wieder deinstalliert
1. April 2008 um 00:34
3. April 2008 um 17:02
Hm hat es einen Grund das du die Funktion "deaktiviert" ausgibst?
das "shortcode_example1" hat mich einige Sekunden lang verwirrt
Aber eine wirklich schöne Sache.
Danke dir für das kleine Tutorial, von alleine hät ich die Funktion niemals gefunden.
3. April 2008 um 17:04
nein, lediglich der Fehlerteufel. Danke!
3. April 2008 um 17:27
So, nachdem auf der wp-hackers Mailingliste das Thema der deaktiverten Shortcodes auch aufgeflammt ist, hab ich mal ein Plugin diesbezüglich geschrieben. Bin gespannt, ob und wann von dort oder von wp-testers Feedback Feedback kommt. Wenn lang genug nix kommt bzw. positive Rückmeldungen kommen werd ich das mal rausbringen, dann hat sich diese Sorge auch erledigt, weil man dem dann ganz schnell abhilfe schaffen kann...
16. April 2008 um 19:19
kann man die shorttags eigentlich verschachteln?
bzw. lässt sich die abarbeitungsreihenfolge irgendwie beeinflussen?
17. April 2008 um 13:51
Ja kann man unter bestimmten Umständen, dafür muss die Funktion, welche den äußeren Shortcode verarbeitet aber do_shortcode aufrufen. Siehe WordPress Codex
Nein. Der äußere Shortcode wird zuerst ausgeführt.
17. April 2008 um 13:53
Verschachteln ist meiner Ansicht nach möglich, habe aber keine Tests gemacht. Würde mal auf die Doku in der Datei verweisen und die Gallerie-Funktion in WP 2.5. WP 2.5.1 wird die Shortcodes zur Gallerie-Funktion nochmal anfassen, eventuell wird es dann sauberer.
17. April 2008 um 14:03
Noch eine kurze Anmerkung zum Verschachteln:
wie gesagt muss die entsprechende Funktion des Plugins die Verschachtelung unterstützen und zweitens kann man nicht den gleichen Shortcode verschachteln, sofern der eingeschlossene ein schließendes Tag (und damit Inhalt) besitzt.
[sca]foo[sca]bar[/sca]baz[/sca]würde darin enden, dass nur
[sca]foo[sca]bar[/sca]geparsed wird, während
bar[/sca]ignoriert würde.
möglich ist jedoch
[sca]foo[scb]bar[/scb]baz[/sca]sofern die Funktion die "sca" verarbeitet ihren Inhalt nochmal durch do_shortcode() verarbeiten lässt. Tut sie das nicht (was wahrscheinlicher ist, sofern es sich um ein Plugin handelt) klappt es nicht.
17. April 2008 um 14:08
wenn der äussere shortcode zuerst ausgeführt wird, sollte es ja eigentlich funktionieren.
dann kann man mit einem shortcode-block einen inneren shortcode des contents dublizieren und mit entsprechenden argumenten füllen.
spannende sache und sehr hilfreich. das beste für mich an wp 2.5. wenn auch bisher mit recht einfachen shortcodes.
17. April 2008 um 14:10
interessant zu testen wäre auch, was passiert, wenn man über einen shortcode überhaupt erst shortcodes erzeugt ... muss mich wohl mal ans testen machen.
hut ab übrigens an diesen blog. es ist der einzige mir bekannte, der auf hohem niveau wp-relevante entwicklungsthemen erörtert.
17. April 2008 um 15:28
@cg: Vielen Dank, freut mich!
Da immer alle auf WP "rumhacken", beschränke ich mich auf diese Themen.
17. April 2008 um 15:40
statt sinnlos zu testen einfach mal in die wp-includes/shortcodes.php reinschauen und verstehen, was passiert...
Das funktioniert folgendermaßen:
Alle existierenden Shortcodes werden in eine Regexp geschrieben so ala
(shortcode1|shortcode2|shorcode3) nur n bissel komplexer.
Dann wird der Shortcode durch das ersetzt, das die Shortcodefunktion als Rückgabewert hat.
Da nur der ursprüngliche Sting und und nicht das Ergebnis einer Umwandlung per Regexp bearbeitet wird, MUSS die Funktion des äußerden Strings do_shortcode erneut aufrufen - sonst kann das nicht funktionieren. Wenn die innere zuerste ausgeführt würde, würde es das allerdings. Aber das ist nicht so einfach und performant umsetzbar wie es so der Fall ist.
Neue shortcodes hinzu zu fügen funktioniert dementsprechend auch nur, wenn du do_shortcode danach ausführst. Danach kannst du dann aber deine hinzugefügten shortcodes wieder entfernen, bevor du das Ergebnis wieder zurückgibst.
13. Mai 2008 um 17:06
18. Juni 2009 um 21:20
Ich habe eine Frage bzw. ein kleines Problem mit den shortcodes... Ich versuche momentan mein eigenes, minimalistisches Adsense-Plugin zu schreiben, da das Plugin, dass ich bisher verwende buggy und vollkommen überdimensioniert ist.
Folgendes Problem:
Ich will mit shortcodes die Syntaxe [ad] [ad#test] und [ad#test2] abfangen.
Wenn ich nun die Reihenfolge
add_shortcode('ad', 'funktion1');
add_shortcode('ad#test', 'funktion2');
add_shortcode('ad#test2', 'funktion3');
in meiner Plugin-Datei habe, wird bei [ad#test] oder [ad#test2] immer der erste shortcode, "[ad]", angezogen.
Ich muss diesen ganz nach hinten setzen, damit [ad#test] greift! Sprich:
add_shortcode('ad#test', 'funktion2');
add_shortcode('ad#test2', 'funktion3');
add_shortcode('ad', 'funktion1');
Ist das normal und richtig, sprich die shortcode-Funktion sucht nicht nach dem vollständigen syntax?
(Weil "ad#test" auch in "ad" vorkommt?)
19. Juni 2009 um 09:06
@Marc: schau mal, dort ist auch nochmal ein Beispiel; ich pers. habe den Code gerade nicht vor Augen oder die Zeit. Ich hoffe, dass hilft?