WordPress PHP Embed – Scripte in einzelne Posts einbinden
Share

Wie heute schon berichtet wurde, haben wir ein kleines Analyse-Tool für jobtweet.de auf den Weg gebracht. Ein wesentlicher Bestandteil des Tools ist ein php – Script.  Die große Freude über die endgültige Fertigstellung musste jedoch bei dem ersten Versuch, das Tool im Rahmen eines WordPress Blogposts vorzustellen, einem Gefühl der Frustration weichen.  Aus verschiedenen Gründen, auf die ich nicht näher eingehen möchte, ist die Einbindung eines php -  Scripts in WordPress Blogs ein mehr oder weniger komplexes Unterfangen.

Die Zeit, die wir in die Lösung des Problems investiert haben, möchte ich anderen Betroffenen gerne ersparen. Unsere Lösung:

1.  WordPress exec-php Plugin istallieren

Nach der Installation und Aktivierung lassen sich php – Scripte in die Posts einbinden. Damit das funktioniert, muss man den Post im HTML Modus editieren. Die Einbindung erfolgt so:

a) <?php include(pfad-auf-deinem-server/dein-script.php); ?>

oder

b) <?php include ‘http://pfad-auf-einem-fremden-server-oder-wenn-a)-nicht-klappt.htm’; ?>

oder

c) <?php Inhalt der dein-script.php Datei ?>

Wenn man hier keine Fehler macht, keine Fragezeichen, Klammern usw. vergisst und den Pfad richtig angibt, wird die Einbindung funktionieren.

Soweit so gut. Sollte das einzubindende php – Script Formatierungselemente enthalten, wird das Endergebnis (Blogpost) sehr wahrscheinlich anders aussehen als geplant.  Elemente die neben einander positioniert waren, sind plötzlich unter einander angeordnet usw. Verursacht wird das durch die  WordPress  ‘wpautop’ Funktion – Autoformatierung.  Um dieses Problem zu vermeiden, wird ein weiterer Schritt benötigt.

2. John Godley Disable WPautop Plugin installieren (davor bitte den Artikel ganz lesen)

Das Plugin schaltet die WordPress Autoformatierung aus. Die Originalformatierung des php – Scripts wird bei der Einbindung entsprechend beibehalten.

(Dieses Plugin funktioniert mit aktuellen WP Versionen und scheint, keine Konflikte mit anderen Plugins zu haben. Das auf der WordPress Seite angebotene Disable WPAUTOP Plugin von 2005 funktioniert dagegen nicht einwandfrei.)

Nach der Installation und Aktivierung, dürfte es keine Probleme mit der Darstellung eines php – Scripts innerhalb eines WordPress Posts geben.

ABER: die Routineprüfung der anderen Blogposts zeigt, dass diese Methode zu Nebenwirkungen führt. Das Abschalten der Autoformatierung durch das Plugin wirkt sich auf alle Blogposts aus und zerstört in der Regel alle Formatierung (Absätze). Das ist ungünstig und führt zwangsläufig zu der Frage, wie sich die Auswirkungen auf einen einzigen Post beschränken lassen.

3. WPautop (Autoformatierung) für einzelne Posts abschalten

Betrachten wir das oben empfohlene John Godley Plugin genau, stellen wir fest, dass es aus einem einzigen kleinen php – Script aus vier Zeilen Code besteht (ohne Kommentare). Das war’s:

<?php
/*
Plugin Name: Disable wpautop
Plugin URI: http://www.urbangiraffe.com/plugins/disable-wpautop
Description: Disables WordPress automatic paragraph formatting
Author: John Godley
Version: 1.0
Author URI: http://www.urbangiraffe.com/
*/

remove_filter (‘the_content’,  ‘wpautop’);
remove_filter (‘comment_text’, ‘wpautop’);

?>

Da uns der 1. Schritt die Einbindung von php – Scripten ermöglicht hat, können wir nun das ganze Plugin innerhalb eines konkreten Posts platzieren und zusätzlich natürlich auch das Script, das wir ursprünglich in den Blogpost einbinden wollten. (Das John Godley Plugin muss nicht installiert werden bzw. muss deaktiviert bleiben.). Das Zwischenergebnis könnte dann  so aussehen.

Das Ganze findet natürlich im HTML Modus statt und wird auch so abgespeichert. Werden hier keine Fehler gemacht, erfolgt die Einbindung des php – Scripts ohne Beeinflussung anderer Posts.

Wem Schritt 3.  doch zu umständlich ist, kann natürlich bei  Schritt 2. bleiben. Und die “zerstörten” Posts manuell reparieren. Da wir diesen umständlichen Weg nicht gewählt haben, bin ich mir nicht 100% sicher, wie man Absätze bei fehlender Autoformatierung definiert. Ich würde es mit den Tags  <br /> oder <p> </p> probieren.

Viel Erfolg!

Mrz 25, 10

antworten