WordPress mit tidy

URL dieses Beitrags: http://blog.stefan-macke.com/2006/05/01/wordpress-mit-tidy/

Den WordPress-Output vor der Auslieferung mit tidy vernünftig formatieren zu lassen ist (zumindest in meinem Fall) ein kleiner Aufwand… Ich musste folgendes tun, um dieses Blog als valides und gut lesbares (X)HTML ausgeben zu können.

  1. Zunächst habe ich mal nach einem PlugIn für WordPress gesucht, und bin letztlich bei diesem gelandet: Christopher Korns WordPress Hack, dass eigentlich nur einen Output Buffer startet und den Buffer mittels bestimmten tidy-Funktionen bereinigt, indem die index.php durch eine neue Version ersetzt wird.
  2. So weit so gut, die Installation von tidy konnte beginnen… und das hat nun etwas länger gedauert :( Ich brauchte eine PECL tidy-Implementierung, die ich mit
    1. pear install tidy

    installieren konnte (vorausgesetzt natürlich man hat PEAR überhaupt installiert). Doch hier gab es dann verschiedene Fehlermeldungen (wie z.B. phpize not found), die ich nach einigem Suchen bei Google lösen konnte, indem ich einige benötigte Pakete inkl. ihrer Abhängigkeiten nachinstallierte:

    1. apt-get install php5-dev php5-cgi libtidy-dev tidy
  3. Nach einem Apache-Neustart kam dann der erste Test der ausgetauschten index.php… und es kam… nichts! Mhh… woran lag das nun? Wohl an unterschiedlichen PHP- und tidy-Versionen des Hack-Autors und mir. Daher habe ich den Hack etwas angepasst und meine index.php sieht nun wie folgt aus.
    1. function wp_clean ($buffer)
    2. {
    3.     $config = array( );
    4.     return tidy_repair_string($buffer, $config, "UTF-8");
    5. }
    6.  
    7. if ($_GET[‘feed’] != (feed||rdf||rss||rss2||atom)) {
    8.     ob_start("wp_clean");
    9. } else {
    10.     ob_start();
    11. }
    12.  
    13. define(‘WP_USE_THEMES’, true);
    14. require(‘./wp-blog-header.php’);
  4. Das Array in Zeile 4 enthält die Konfiguration für tidy. Eine nette Seite mit möglichen Einstellungen ist diese hier. Meine Konfiguration sieht so aus:
    1. $config = array(
    2.     ‘indent’ => TRUE,
    3.     ‘output-xhtml’ => TRUE,
    4.     ‘output-xml’ => FALSE,
    5.     ‘tidy-mark’ => TRUE,
    6.     ‘wrap’ => 0,
    7.     ‘wrap-attributes’ => FALSE,
    8.     ‘wrap-script-literals’ => FALSE,
    9.     ‘tab-size’ => 4 ,
    10.     ‘indent-spaces’ => 4,
    11.     ‘indent-attributes’ => FALSE,
    12.     ‘doctype’ => ‘strict’,
    13.     ‘char-encoding’ => ‘utf8′,
    14.     ‘numeric-entities’ => FALSE,
    15.     ‘quote-marks’ => FALSE,
    16.     ‘quote-nbsp’ => TRUE,
    17.     ‘quote-ampersand’ => TRUE,
    18.     ‘fix-backslash’ => TRUE,
    19.     ‘break-before-br’ => FALSE,
    20.     ‘uppercase-tags’ => FALSE,
    21.     ‘uppercase-attributes’ => FALSE,
    22.     ‘clean’ => FALSE,
    23.     ‘logical-emphasis’ => TRUE,
    24.     ‘drop-empty-paras’ => TRUE,
    25.     ‘drop-font-tags’ => FALSE,
    26.     ‘enclose-text’ => FALSE,
    27.     ‘enclose-block-text’ => FALSE,
    28.     ‘fix-bad-comments’ => TRUE,
    29.     ‘add-xml-space’ => FALSE,
    30.     ‘vertical-space’ => TRUE,
    31. );
  5. ADD: Habe tidy erstmal abgeschaltet, da es mir entweder die Umlaute etc. in kryptischen Zeichen wiedergab oder spezielle Entities wie (“…”) zerstörte. Aber gut zu wissen, das es prinzipiell funktioniert :) Und WordPress gibt ja per se schon valides (X)HTML aus, das einzige, was tidy schöner machen würde, wäre die Einrückung des Quelltextes…

Kommentare zu diesem Beitrag

  1. Gravatar tip24
    Am 14. November 2006 um 00:47 Uhr

    ich habe es auch versucht. bin aber kläglich gescheitert! alle achtung!

  2. Gravatar Juniperus
    Am 1. Juli 2007 um 13:51 Uhr

    Da hatten wir beide wohl die gleiche Idee… ;-)

    Mein Ansatz war etwas anders – aber eben auch ein Hack. Ich habe übrigens gerade erst gemerkt, dass es ja ein Problem mit den Feeds gab. Ich habe das allerdings nicht ganz so elegant wie Du gelöst, indem ich die XML-Präamble des Quelltextes verglichen habe. Ich werd’ jetzt aber mal Deine Idee aufgreifen, weil sie viel schöner ist…

  3. Gravatar Stefan
    Am 1. Juli 2007 um 14:34 Uhr

    Viel Erfolg dabei! Ich habe wie erwähnt (Punkt 5) Tidy wieder ausgeschaltet ;)

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>