Mittwoch, 14. Februar 2007 Druck-Ansicht
Einige kleine Änderungen am Design hier sind jetzt soweit durch: Insgesamt eine größere Schrift, die Header-Navigation ist ein bisschen weniger “eckig” als vorher - und der Logo-Bereich ist etwas “plastischer” geworden.
Ich hoffe, es gefällt.
Eventuell gibt’s hier und da noch einige Anzeige-Fehler, aber erstens ist das neue Theme noch nicht 100%ig fertig - und zweitens bestehen noch ein paar “Merkwürdigkeiten” seit dem Upgrade auf Wordpress 2.1.
Nanu? Lauter Fehler? Der Filter wpautop() scheint anders zu arbeiten als früher. Aus beispielsweise ursprünglich
<div class="Abbildung"><img src="blablabla" /></div>
wurde
<div class="Abbildung"><p><img src="blablabla" /></div>
… hinter etlichen </div>-Tags stand in der HTML-Ausgabe plötzlich ein </p> die Ausgabe verschiedener Kontaktformular-PlugIns war auf einmal mit Absätzen und Zeilenumbrüchen durchsetzt und so weiter …! Was tun, wenn man nicht alle möglichen Seiten etc. neu schreiben möchte?
Ich hab mir also die Funktion wpautop() aus Wordpress 1.52 kopiert und in ein eigenes “Mini-PlugIn” geschrieben
<?php
/*
Plugin Name: wpautopOld
Plugin URI: http://www.gunnart.de/?p=222
Description: Replaces the new wpautop-Function with the old wpautop-Function
Author: Wordpress 1.52
Author URI: http://www.gunnart.de
Version: 0.1
*/
function wpautopOld($pee, $br = 1) { // Taken from Wordpress 1.52
$pee = $pee . "\n"; // just to make things a little easier, pad the end
$pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
// Space things out a little
$pee = preg_replace('!(<(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)!', "\n$1", $pee);
$pee = preg_replace('!(</(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6])>)!', "$1\n", $pee);
$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
$pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "\t<p>$1</p>\n", $pee); // make paragraphs, including one at the end
$pee = preg_replace('|<p>\s*?</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
$pee = preg_replace('!<p>\s*(</?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|hr|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
$pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
$pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
$pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
$pee = preg_replace('!<p>\s*(</?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|hr|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)!', "$1", $pee);
$pee = preg_replace('!(</?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)\s*</p>!', "$1", $pee);
if ($br) $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
$pee = preg_replace('!(</?(?:table|thead|tfoot|caption|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)\s*<br />!', "$1", $pee);
$pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)!', '$1', $pee);
$pee = preg_replace('!(<pre.*?>)(.*?)</pre>!ise', " stripslashes('$1') . clean_pre('$2') . '</pre>' ", $pee);
return $pee;
}
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'wpautopOld');
?>
Nach dem Aktivieren dieses “Mini-PlugIns” waren die meisten Ausgabe-Probleme behoben. Aber wenn man schon updatet, möchte man auch ein bisschen mehr Komfort beim Schreiben von Blog-Beiträgen.
Nur der eingebaute WYSIWYG-Editor macht irgendwie merkwürdige Sachen. Aus bereits bestehenden Seiten mit Code à la
<div class="Abbildung"><img src="blablabla" /></div>
<div class="Text">
<h4>Text</h4>
<p>Blablabla</p>
</div>
… macht die Code-Ansicht vom Editor
<p class="Abbildung">
<img src="blablabla" />
<p class="Text">
<h4>Text</h4>
Blablabla
… Aber damit nicht genug - schaltet man ein weiteres Mal zwischen Code- und Visueller Ansicht hin und her, bleibt nur noch das hier übrig:
<p class="Abbildung">
<img src="blablabla" />
<h4>Text</h4>
Blablabla
… und wenn man nur oft genug hin- und her schaltet, verschwindet nach und nach so beinahe alles an eigenem Code. Bis nur noch die Fehler übrig bleiben.
Okay, also weiterhin kein WYSIWYG-Editor für mich. Zumindest nicht den eingebauten. Ich bin am Überlegen, ob ich nicht auch bei mir den “Xinha4WP”-Editor installieren soll. Der ist zwar auch nicht ganz XHTML-Strict, macht aber erheblich weniger Faxen - Nur dann könnte es eventuell weitere Probleme mit der HTML-Ausgabe bereits bestehender Beiträge geben …
… Um dann nicht alle Beiträge und Seiten überarbeiten zu müssen, wird wohl das PlugIn “Text-Control” einsetzen - und ein bisschen bearbeiten, denn unter Wordpress 2.1 stellt Text-Control leider nicht bei jedem Beitrag und jeder Seite ein Dropdown zur Verfügung, mit dem man sich die gewünschte Formatierung aussuchen kann … und außerdem kennt Text-Control ja “meinen” neuen Filter “wpautopOld()” noch nicht.
Derlei Experimente sind dann aber wieder ein Fall für meine Test-Seite.
Bookmarks, Feed und Links
Wenn Ihnen dieser Beitrag geholfen hat ...
Beiträge zu ähnlichen Themen:
3 Antworten zu Redesign mit ein paar Hindernissen
Kommentar schreiben