WordPress 2.5 Shortcode API

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.

Comments

  
  1. Xel says:

    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.

  2. 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.

  3. Xel says:

    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 ;-)

  4. Jared says:

    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.

  5. nein, lediglich der Fehlerteufel. Danke!

  6. Xel says:

    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...

  7. cg says:

    kann man die shorttags eigentlich verschachteln?

    bzw. lässt sich die abarbeitungsreihenfolge irgendwie beeinflussen?

  8. Xel says:

    kann man die shorttags eigentlich verschachteln?

    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

    lässt sich die abarbeitungsreihenfolge irgendwie beeinflussen?

    Nein. Der äußere Shortcode wird zuerst ausgeführt.

  9. 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.

  10. Xel says:

    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.

  11. cg says:

    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.

  12. cg says:

    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.

  13. @cg: Vielen Dank, freut mich!
    Da immer alle auf WP "rumhacken", beschränke ich mich auf diese Themen.

  14. Xel says:

    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.

  15. Marc says:

    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?)

Trackbacks

  1. [...] der neuen WordPress-Version wurde in Verbindung mit der neuen Shortcode API ein recht nettes (abgesehen von der derzeit noch invaliden XHTML-Ausgabe, aber dazu ein anderer [...]

© 2014, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift