WordPress: PHP Code in statischem Text-Widget ausführen ohne Plugin

Gino Cremer (73 Beiträge)

Ich bin Grafiker und Webdesigner mit Schwerpunkt HTML/CSS/Wordpress und Social Media.

Oftmals steht man in WordPress vor dem Problem, dass man in den Widgets PHP-Code ausführen möchte. Jetzt könnte man eines der zahlreichen Plugins nutzen. Doch da wir weder zusätzlichen Plugin-Ballast, noch ein weiteres ständig zu aktualisierendes Plugin wünschen, sparen wir uns das doch direkt!

Das magische Zauberwort lautet wie so oft: “functions.php”! Um PHP-Code nun in einem statischen Text-Widget (WordPress-Standard) ausführen zu können, reicht es, wenn wir folgende Funktion der Datei “functions.php” hinzufügen.


add_filter('widget_text', 'gibmirphp', 99);
function gibmirphp($text) {
if (strpos($text, '<' . '?') !== false) {
ob_start();
eval('?' . '>' . $text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}

Was macht die PHP-Funktion denn nun genau?

Die Funktion wird dank des “WordPress-Hooks” add_filter initialisiert. Wir übergeben anschließend den Inhalt des Text-Widgets der entsprechenden Funktion. Diese prüft nun ob innerhalb des “Textes” PHP ausgeführt werden soll. Als Kriterium dienen die typischen “<?” und “php” Begriffe. Beide werden bewusst getrennt betrachtet, sonst würden Leerzeichen dazwischen eine Ausführung verhindern und “false” ausgeben. Insofern “true” (also Element vorhanden) ausgegeben wird, wird der Code “ausgeführt” und zum Ende hin das fertig geparste HTML “ausgespuckt”.

Das war’s…ohne Plugin, ohne Wartungsaufwand. Vielen Dank an Emanuele Feronato.

Gino Cremer (73 Beiträge)

Ich bin Grafiker und Webdesigner mit Schwerpunkt HTML/CSS/Wordpress und Social Media.

9 Gedanken zu “WordPress: PHP Code in statischem Text-Widget ausführen ohne Plugin

  1. Geil es funktioniert, vielen vielen Dank genau das habe ich gesucht gehabt 5 mal Daumen hoch für deinen Beitrag, mich wundert es das hier noch kein Kommentar vorhanden ist :)

  2. Ganz großen respekt. Es sind halt die kleinen Dinge, die das Leben mit WP einfacher machen! Und das ganz ohne PlugIn – Klasse!!!

    • Hallo,

      gerne. Die geschwungene Klammer ist allerdings korrekt… wir haben das Snippet schon sehr oft selber genutzt und konnten bisher nie irgendwelche Fehler feststellen. :-)

      Viele Grüße

      [EDIT: Doch, danke für den Hinweis, wir haben die Klammer gerade korrigiert, fragt sich, wie die sich reinschmuggeln konnte... vorallem, da es bisher zu keinem Fehler führte :-) ]

    • Hallo Daniel. Hast du denn auch den PHP-Code richtig in “eckige Klammern” gepackt? Die sind wichtig, damit das Script ausgelöst wird. Um genauer zu schauen warum es nicht funktioniert, fehlt mir da allerdings etwas der Einblick. Prüf auf jeden Fall ob in der functions.php alles korrekt eingetragen ist und im Text-Widget der PHP-Code korrekt mit < ?php beginnt und mit ?> endet

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>