WordPress: get_the_content() mit Shortcodes

WordPress Tipps und Tricks - Troubleshooting

WordPress Tipps und Tricks - Troubleshooting

Aus aktuellem Anlass, ein Troubleshooting zu WordPress, get_the_content() und das Problem Shortcodes.

Mit der Funktion the_content() wird per PHP-echo der Seiteninhalt ausgegeben. Das nutzt man normalerweise für Posts und Pages (single.php, page.php).
Wer jedoch den Seiteninhalt lieber in einer Variable haben möchte, muss get_the_content() dafür nutzen.

Artikelinhalt als Variable

Das ganze kann so aussehen:
/* Innerhalb der Loop */$content = get_the_content();# weitere Verarbeitungen...echo $content;

Nun wäre der Artikelinhalt in der Variable $content.

Das Problem an der Sache ist nur, dass Shortcodes nicht funktionieren. Also auch die Shortcodes für Media-Dateien wie Bilder (caption) gehen nicht mehr.

Lösung: nutze apply_filters

Die Funktion für Shortcodes muss man nun selbst aufrufen, das wäre do_shortcode().
Das liegt daran, dass WordPress uns hier die Möglichkeit gibt, mit den Shortcodes (die in der Variable $content liegen) zu arbeiten, ohne das diese ausgeführt werden. Eine tolle Möglichkeit, wie ich finde. Danach muss man aber die restlichen Shortcodes ausführen.

Probleme gibt es jedoch, wenn du deine Variable nur durch die Funktion do_shortcode laufen lässt. Bspw.
$content = do_shortcode($content);

Das parst zwar die WordPress-Shortcodes, jedoch nicht die von Plugins!

Du kannst das aber mittels apply_filters() machen!
Diese gehört dann in deine Loop (z.b. single.php oder page.php).
</* innerhalb deiner Loop */$content = apply_filters(\\\'the_content\\\', get_the_content());# Optional weitere Verarbeitungen der $contentecho $content;

Fazit

Eigentlich eine ganz angenehme Sache, wenn man die notwendigen Funktionen kennt. Hat man den Artikelinhalt in einer Variable, kann man tolle Dinge damit anstellen.
Ich selbst nutze das ganze wie oben gezeigt, um die AdSense Werbung vor der 2. und 4. h3-Überschrift einzufügen.