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.
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 :)
Hallo Felix. Danke für das Kompliment! Super,dass dir der Tipp geholfen hat :) Beste Grüße!
Auch von mir ein herzliches Dankeschön!
Ganz großen respekt. Es sind halt die kleinen Dinge, die das Leben mit WP einfacher machen! Und das ganz ohne PlugIn – Klasse!!!
Danke Andreas, gern geschehen!
Super, jetzt klappt es! Ich glaube jedoch, dass die letzte geschwungene Klammer weg muss. Ansonsten zerschießt es einem die function.php.
DANKE
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 :-) ]
Hi, bei mir wird der PHP-Code auskommentiert ausgegeben. Woran kann das liegen?
Danke!
Daniel
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