WordPress Dashboard weiß und unbenutzbar

Ich habe einige weitere Blogs, um die ich mich leider viel zu selten kümmere. Als ich neulich einen dieser anderen Blogs als Administrator öffnen wollte, war das Dashboard komplett weiss und nicht bedienbar - nur die linke Menüleiste wurde angezeigt. Der HTML-Quelltext zur Seite zeigte ganz unten einen PHP-Fehler an:

Fatal error: Access to undeclared static property: WP_Screen::$this in blog/wp-admin/includes/screen.php on line 706

Ein Blick in die entsprechende Datei zeigt tatsächlich die wirklich seltsame und bemängelte Konstruktion (aus statischer Klassenreferenz mit $this), die zumindest mit PHP 5.4 nicht mehr kompatibel ist. (Nebenbei: Eine Redefinition und Nutzung von $this als statische Variable einer Klasse war schon vor PHP 5.4 falsch bis gefährlich. Dass PHP 5.3 umgekehrt die Verwendung von $this mit statischen Variablen in der Form $this::$var erlaubt, hat damit nichts zu tun. Na ja - auch WordPress-Entwickler machen wohl ab zu Fehler, bei denen man sich fragt, wie man überhaupt auf so ein Statement kommen konnte ... )

Bei meinem Web-Hosting-Provider hatte ich tatsächlich vor einiger Zeit tatsächlich die Nutzung von PHP 5.4 als Standard eingestellt. Meine WordPress-Version war zudem auch schon ein wenig alt - eine 3.3.x-Version. Im Internet findet man aber die Beschreibung eines unbrauchbaren Dashboards aber auch für 3.8 Upgrades. Dort war das Statement in der screen.php strukturell ähnlich verbockt:

Fatal error: Access to undeclared static property: self::$this in blog/wp-admin/includes/screen.php on line 706

Wir kommt man nun wieder zu einem benutzbaren WordPress?

Die eine Variante ist, alle WordPress Dateien auf dem Server manuell upzudaten. Dabei muss man aber einige Konfigurationsdateien unbedingt unangetastet lassen. Ferner läuft man Gefahr, dass auch ein Datenbank-Update erforderlich wird, das nach einem reinen Austausch der Dateien aber nicht unbedingt automatisch angestoßen wird. (Vor einem manuellen Update in jedem Fall Backups aller Dateien UND der Datenbank machen!)

Will man sich - wie ich - solchen Risiken nicht aussetzen, muss man das fehlerhafte PHP Statement selbst korrigieren. [Bestätigt darin haben mich zwei Forumsbeiträge, deren Links ich weiter unten angebe.] Also die Datei "wpadmin/includes/screen.php" per FTP vom Server herunterladen und in Zeile 706 (oder für welche Zeile der Fehler sonst gemeldet wurde) editieren und in den Statements

"WP_screen::$this->_help_sidebar"
bzw.
"self::$this->_help_sidebar"

die Kassenreferenz vor dem "$this" entfernen, so dass nur

$this->_help_sidebar

übrigbleibt. Unmittelbar nachfolgende Strichpunkte oder anderen Code unverändert lassen. Danach die Datei wieder auf den Server laden.

Im Anschluss wurde bei mir das Dashboard wieder nutzbar und ich konnte das Upgrade auf Version 4 wie gewohnt durchführen. Danach funktionierte alles wieder normal. Viel Spass weiterhin mit euren WordPress-Blogs!

Links zu dem WordPress-Fehler:
http://wordpress.stackexchange.com/questions/127427/how-to-fix-empty-dashboard-issue-in-wordpress
https://wordpress.org/support/topic/38-update-now-all-dashboard-pages-blank

Links zu $this, self:: und statischen Variablen in PHP:
http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Statische_Eigenschaften_und_Methoden
http://stackoverflow.com/questions/151969/when-to-use-self-vs-this
http://www.programmerinterview.com/index.php/php-questions/php-self-vs-this/
http://www.diffen.com/difference/self_%28PHP%29_vs_this_%28PHP%29
http://php.net/manual/de/language.oop5.static.php
und komplexer mit dynamischen Klassennamen:
http://stackoverflow.com/questions/675676/access-a-static-variable-by-varreference

WordPress – Einstellung der Fontsize des Text-Editors

WordPress 3.x (x >= 2) nutzt den MS Consolas Font im Text-Editor. Hier meine ich den Minimal-Editor, in dem man selbst HTML/CSS-Befehle eingeben kann und nicht den Visual Editor..

Der Consolas TTF-Font sieht unter Linux nach meinem Dafürhalten nicht besonders gut aus. Hinzu kommt, dass die von WordPress eingestellte Standard-Font-Größe des Minimal-Editors auf meinen hochauflösenden Laptopschirmen einfach zu klein ist. "Ctrl +" im Browser hilft auch nicht wirklich, da dann alle Bereiche der Seite vergrößert werden und das Editor-Fenster zu klein wird.

Nun weiß man, dass das eine Einstellungssache ist. Aber welches CSS-File muss man editieren ? Für die Style-Vorgaben der generierten Webseiten und auch für die Styles des Visual-Editors gibt es unter dem Menüpunkt Design den Editor, mit dem man die zugehörigen CSS-Dateien online bearbeiten kann. Für die CSS-Files, die das Layout der Admin- oder Redakteurs-Oberfläche steuern, habe ich dagegen keine einfache Bearbeitungsmöglichkeit gefunden.

Zu meiner Überraschung erwies sich eine Suche im Internet bzgl. entsprechender Hinweise als wahre Odyssee. Es gibt zwar Hinweise, aber die meisten sind veraltet. Daher an dieser Stelle ein paar Hinweise:

Die CSS-Steuerung der verschiedenen Seiten und Elemente der Admin-Oberfläche erstreckt sich inzwischen über eine Vielzahl von Dateien, die in folgendem Verzeichnis liegen:

wp-admin/css

Nun möchte man meinen, dass man da was Passendes finden würde. Falsch gedacht !

Ich habe dann in einem Verzweiflungsanfall die CSS-Analyse-Tools von FF benutzt, um den CSS-Klassennamen für das Textarea-Feld im Editor-Bereich zu finden, und mich danach auf die Suche nach Eintragen in CSS-Dateien in mehreren Verzeichnissen gemacht. Fündig wurde ich schließlich in folgendem File :

wp-includes/css/editor.min.css

Vor weiteren Aktionen legt man nun eine Sicherungskopie dieser Datei an. Nun ist dieses File nicht ganz leicht zu editieren, da alle CSS-Anweisungen in eine einzige lange, komprimierte Zeile geschrieben wurden. Manche Editoren mögen die entstehenden Zeilenlängen nicht. Aber man setze z.B. in Kate die erlaubte Zeilenlänge auf 300000 Characters und schon ist man wieder im Spiel. Nun gilt es die Anweisungen für

.wp-editor-container    textarea.wp-editor-area

zu finden. Dort fügt man dann die gewünschte "font-size" und "font-family" hinzu. Und schon sieht der WordPress Text-Editor wieder so gut aus wie in alten Zeiten.

wp_1_600

Andere Alternativen zur Abänderung der CSS-Vorgaben bestehen darin, eine Inline-Style-Vorgabe in die Datei

wp-admin/post.php

beim Textarea-Feld einzufügen. Oder man arbeite mit dem netten Plugin "Add Admin CSS" und gebe dort die Vorgaben für ".wp-editor-container    textarea.wp-editor-area" im gewöhnlichen CSS-Format ein. Letztere Methode hat auch den Vorteil, dass sie evtl. WordPress-Updates überlebt.

Denn eine Abkehr von der aktuellen CSS-Politik und einen Veränderung der Position und Namen der Files, die das Layout steuern, kommt mit Sicherheit eher früher als später. Bis dahin jedenfalls weiter viel Spass beim Bloggen!

WordPress und Anführungszeichen

Jetzt war ich so froh, die 1&1-Wordpress-Packungen hinter mir gelassen zu haben. Aber gestern hat mich dann ein Negativ-"Feature" aktueller WordPress-Versionen kalt erwischt:

Englische Zollzeichen (SHIFT+2) und einfache Anführungszeichen (SHIFT+#) werden standardmäßig in typographische Anführungszeichen umgewandelt. Dies erkennt man u.a. auch, wenn man den Quellcode der generierten Webseiten betrachtet. Dort sind die normal eingegebenen Anführungszeichen dann durch definierte Charactercodes ersetzt - und zwar doppelte wie einfache Anführungszeichen. Darüber mögen sich nun Freunde normgerechter deutscher Schriftsprachen-Zeichen sicher sehr freuen. Obwohl die Umwandlung nicht mal für alle Fonts sauber umgesetzt ist und keineswegs immer die '66 99'-Abfolge dargestellt wird. Ich finde das ganze Theater für technisch orientierte Blogs aber geradezu als Belastung! Wegen der standardmäßig vorgenommenen Umwandlung lassen sich nämlich Informationen zu Kommando- oder Programmzeilen nicht mehr einfach aus WordPress-Beiträgen herauskopieren.

Das typographische Umsetzen von Anführungszeichen sollten die WordPress-Entwickler deshalb künftig unbedingt als abschaltbare Option definieren! Wer in Blogs unbedingt schön und normgerecht gesetzte Texte unterbringen will oder muss, mag eine solche Norm gerne nutzen. Als Standard sollte das aber nicht eingestellt sein.

Gott sei Dank gibt es hierfür aber eine Korrektur der entsprechenden PHP-Filtereinstellungen - also einen einfachen Workaround. Den entsprechenden Tipp habe ich unter

http://www.meinubuntu.de/2011/09/05/normale-anfuhrungszeichen-verwenden-in-wordpress/

gefunden! Gemäß dieses Artikels muss man die Datei "functions.php" unter dem WordPress-Menüpunkt "Design >> Editor" aufrufen und am Ende durch die Zeile

remove_filter('the_content', 'wptexturize');

ergänzen. Das hat bei mir einwandfrei funktioniert.

Man sollte sich von der Datei "functions.php" seines Themes eine Kopie anlegen und die vorgenommene Änerung im Code deutlich durch einen Kommentar kennzeichnen - beim nächsten Update von WordPress wird diese Datei sicher überschrieben.

Weitere nette oder lesenswerte Artikel in diesem Zusammenhang sind :

http://www.interaktionsdesigner.de/2009/01/08/weg-mit-den-verdammten-anfuhrungszeichen-von-wordpress/
http://www.flomei.de/2012/04/29/deutsche-anfuhrungszeichen-in-wordpress-ohne-plugin-2/
http://www.reussmedia.de/wordpress-deutsche-anfuehrungszeichen/
http://www.elmastudio.de/wordpress/schrift-in-wordpress-optimieren-mit-dem-wp-typography-plugin/