Kuerzlich habe ich ein kleines Akkordeon-Plugin fuer WordPress geschrieben, mit dem ich auf einer meiner Seiten eine Art “Spoiler” bauen wollte. Dies wollte ich mit Shortcodes und einem Attribut (Ueberschrift) loesen.
Damit in dem Akkordeon jedoch weitere Shortcodes verwendet werden koennen, also zum Beispiel Shortcodes fuer mehrere Spalten oder spezielle Formatierungen, muss beim schreiben der Shortcode-Funktion eine Kleinigkeit beachtet werden.
So gibt man in der Shortcode-Funktion des Plugins den Inhalt zwischen zwei Shortcodes aus:
$content
Sollen jetzt jedoch verschachtelte Shortcodes ermoeglicht werden, muss noch eine Methode um den zuvor genannten Teil gelegt werden:
do_shortcode($content)
So kann man, vorrausgesetzt andere Entwickler haben dies auch beachtet, Shortcodes beliebig oft verschachteln.
Ich fand wichtig, das auf meinem Merkzettel stehen zu haben.
Hier noch die ganze Funktion der Vollstaendigkeit halber:
Falsch:
function accordionwrap( $atts, $content = null ) { extract(shortcode_atts(array( "headline" => 'no headline set!' ), $atts)); return '<section id="akkordeon"> <div> <div> <div>' . $headline . '</div> </div> <div> <p>' . $content . '</p> </div> </div> </section>'; }
Richtig:
function accordionwrap( $atts, $content = null ) { extract(shortcode_atts(array( "headline" => 'no headline set!' ), $atts)); return '<section id="akkordeon"> <div> <div> <div>' . $headline . '</div> </div> <div> <p>' . do_shortcode($content) . '</p> </div> </div> </section>'; }
Bin gerade damit beschäftigt. Es funktioniert leider nicht bei mir, bei verschachtelten div-Elementen, auch mit do_shortcode($content) nicht.
So etwas geht nicht, finde grade keine Lösung..
[div class="row marginbottom23 paddingbottom23"]
[div class="col-md-12"]
[div class="col-md-6 col-xs-12 paddingleft46 paddingright23"]
bla
[/div]
[div class="col-md-6 col-xs-12 paddingleft46 paddingright23"]
bla
[/div]
[/div]
[/div]
Hallo Vitaliy,
wie ist dein PHP-Code für die [div]-Shortcodes?
VG
Hallo
Sehr guter Beitrag
Kann man eigentlich auch zwei Shortcodes mit einen Button ausführen lassen.
Wie ist dies einzugeben?
LG
Harald