Das Putzlowitsch Test- und SEO-Blog

Neue WordPressversion 2.3.1

Seit gestern gibt es die neue deutsche Version 2.3.1 für WordPress der 2.3er Reihe. Es ist im wesenlichen ein Bugfix- und Security-Release, als wurden im wesentlichen Fehler beseitigt und Sicherheitslöcher gestopft. Neue Funktionen wird es wohl erst ab Version 2.4 wieder geben. Benutzern von WordPress 2.3 wird geraten, auf die neue Version upzudaten.
Ähmmm, da ich ja kürzlich, nachdem noch so einige stratospezifische und andere Probleme behoben werden mußte, auf Version 2.3 umgestiegen war, betrifft mich das hier ja auch, also dann mal ran und frisch upgedated. Bis gleich *wink*

Nachtrag (11:13 Uhr):
Update hat problemlos funktioniert. Bin also wieder up-to-date

Keine Kommentare »

WordPress 2.3 – Anonym up-to-date bleiben

Heute kommt, so der Terminplan eingehalten wird, die neue WordPressversion 2.3 raus. Neben einigen eher für Plugin-Programmierer interessanten Änderungen der Datenbankstruktur dürfte sich der WordPressnutzer mehr für die neuen Funktionen intessieren. Was es so an Neuerungen gibt, kann man im WP-Deutschland-Blog nachlesen, da wären z.B. Tags nebst Tagwolke, SEO-Verbesserungen und Updatebenachrichtigung.

Letzteres sorgt aber bereits jetzt für Unmut in der WP-Welt, denn diese durchaus sinnvolle Funktion überträgt beim Überprüfen der Versionsinformationen auch Daten, die dafür nicht erforderlich wären, so z.B. die Adresse (URL) des Blogs. Im WP-Forum wird bereits darüber diskutiert und das eine oder ander Blog berichten darüber. Es gibt auch schon Plugins, welche die Updatebenachrichtigungsfunktionen deaktivieren, nur dann werden gar keine Updateinformationen mehr angezeigt.

NEU: Jetzt auch als Plugin.

Ich beschreibe im Folgenden eine Möglichkeit, wie man die Versionsüberprüfung beibehalten kann, ohne aber die eigene Blog-URL an wordpress.org zu übertragen. Dafür kommt mal wieder meine Lieblingskind, die my-hacks.php zum Einsatz. Falls diese Datei im WordPress-Wurzelverzeichnis nicht existiert, legt man sie neu an. Dann kommt der folgende Code dort hinein:

<?php
// Namen der Update- und Check-Funktion
define('PLW_PLG_FUNC', 'wp_update_plugins');
define('PLW_VER_FUNC', 'wp_version_check');

// anonymisiert die URL
function plw123_anon_url() {
 return "http://example.org";
}

// "anonymisiert" aktive Plugins
function plw123_no_active_plugins() {
 return "a:0:{}";
}
// Ersetzt die originale 'wp_version_check'
function plw123_anon_version_check() {
 if( function_exists( PLW_VER_FUNC ) ) {
  add_filter( 'pre_option_home', 'plw123_anon_url', 99999 ); 
  call_user_func( PLW_VER_FUNC );
  remove_filter( 'pre_option_home', 'plw123_anon_url', 99999 ); 
 }
}

// Ersetzt die originale 'wp_update_plugins'
function plw123_anon_update_plugins() {
 if( function_exists( PLW_PLG_FUNC ) ) {
  add_filter( 'pre_option_home', 'plw123_anon_url', 99999 ); 
  add_filter( 'pre_option_active_plugins', 'plw123_no_active_plugins', 99999 ); 
  call_user_func( PLW_PLG_FUNC );
  remove_filter( 'pre_option_active_plugins', 'plw123_no_active_plugins', 99999 ); 
  remove_filter( 'pre_option_home', 'plw123_anon_url', 99999 ); 
 }
}

// Versionschek entfernen und durch eigene Funktion ersetzen
if( function_exists( PLW_VER_FUNC ) ) {
 remove_action( 'init', PLW_VER_FUNC );
 add_action( 'init', 'plw123_anon_version_check' );
}

// Plugin-Update entfernen und durch eigene Funktion ersetzen
function plw123_change_update_plugins () {
 if( function_exists( PLW_PLG_FUNC ) ) {
  remove_action( 'load-plugins.php', PLW_PLG_FUNC );
  add_action( 'load-plugins.php', 'plw123_anon_update_plugins' );
 }
}
add_action( 'admin_menu', 'plw123_change_update_plugins' );
?>

Download: my-hacks.php (als ZIP)

Der Trick besteht darin, das man während der Ausführung der wp_version_check und wp_plugin_updates Funktion ein Filter installiert, welches nicht die URL sondern einen beliebigen anderen Text zurückgibt. Diesen kann man in der Funktion plw123_anon_url festlegen, im Beispiel wird http://example.org zurückgegeben. Danach wird das Filter wieder entfernt. Um den Funktionsaufruf so „einrahmen“ zu können, werden die originalen Funktionen mit remove_action entfernt und statt dessen die eigenen Funktionen mit add_action installiert.

Nachtrag (24.09.2007 15:10): Ich habe nun noch zusätzlich die „Anonymisierung“ der aktiven Plugins eingebaut., das heißt, es wird keine Information mehr übertragen, welche Plugins auch tatsächlich aktiv sind.

Und dann gäbe es noch ein klassisches Henne-Ei-Problem, wenn der Code in einem Plugin verpackt wäre (was natürlich auch möglich ist). Um das Plugin zu aktvieren, muß man im Adminbereich die Pluginseite aufrufen und schwupps werden die Daten ersteinmal an WordPress gesendet. Beim Update von einer älteren Version ist das kein Problem, da kann man das Plugin vor dem Update einspielen und aktivieren. Bei einer Neuinstallation hat man aber so keine Chance. Deshalb ist das in der my-hacks.php besser aufgehoben. Dann muß diese aber auch bei „Einstellungen“ -> „Verschiedenes“ aktiviert werde (vor dem Update):

[x] Die veraltete my-hacks.php-Datei unterstützen.

Bei einer Neuinstallation muß man, wenn man ganz Sicher gehen will, die entsprechende my-hacks.php gleich mit kopieren und unmittelbar nach den WP-Installationsschritten vor dem ersten Aufruf zunächst direkt in der Datenbank die My-Hacks-Option aktvieren. Dazu in der Tabelle wp_options den Datensatz mit dem option_name hack_file suchen und den Wert für option_value zu 1 ändern.

Ein Problem gibt es allerdings. Sollten sich die Funktionsnamen oder der Ablauf der Versionskontrolle in zukünftigen WordPressversionen ändern, dann funktioniert der Hack nicht mehr und muß angepaßt werden.

14 Kommentare »

Neue WordPressversion 2.2.3

Seit vorgestern gibt es die neue Version 2.2.3 für WordPress der 2.2er Reihe. Es ist im wesenlichen ein Bugfix- und Security-Release, als wurden im wesentlichen Fehler beseitigt und Sicherheitslöcher gestopft. Neue Funktionen wird es wohl erst ab Version 2.3 wieder geben. Benutzern von WordPress 2.2.x wird geraten, auf die neue Version upzudaten.
Ähmmm, das betrifft mich hier ja auch, also dann mal ran und frisch upgedated. Bis gleich *wink*

Nachtrag (14:13 Uhr):
Update hat problemlos funktioniert. Bin also wieder up-to-date

Keine Kommentare »

Logfile-Kunst

Nach der Pixelkunst habe ich heute in meinem Server-Logfile folgendes entdeckt:

"GET /themen/wordpress/ HTTP/1.1" 301 5
"GET /themen/wordpress// HTTP/1.1" 301 5
"GET /themen/wordpress/// HTTP/1.1" 301 5
"GET /themen/wordpress//// HTTP/1.1" 301 5
"GET /themen/wordpress///// HTTP/1.1" 301 5
"GET /themen/wordpress////// HTTP/1.1" 301 5
"GET /themen/wordpress/////// HTTP/1.1" 301 5
"GET /themen/wordpress//////// HTTP/1.1" 301 5
"GET /themen/wordpress///////// HTTP/1.1" 301 5
"GET /themen/wordpress////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////// HTTP/1.1" 301 5
"GET /themen/wordpress////////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////////// HTTP/1.1" 301 5
"GET /themen/wordpress////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////////////// HTTP/1.1" 301 5

Gut, hinten und vorn habe ich einiges weggelassen aber auch so sieht das doch sehr nett aus. Zumal es dann öfter im Logfile stand, manchmal auch etwas kleiner.

Und wie der erfahrene Webmaster am Statuscode 301 sofort erkennt, handelt es sich um eine Redirect-Endlosschleife, also um theoretisch unendlich viele permanente Weiterleitungen. Das es nicht tatsächlich endlos so weitergeht liegt nur daran, daß der ordentlich programmierte Browser/Robot/Bot nach einer gewissen Anzahl Redirects das Spielchen nicht mehr mitmacht und mit einer Fehlermeldung dem Spuk ein Ende setzt. Bei Firefox und Opera sind es z.B. 20 Weiterleitungen, der Google-Bot gibt bereits nach 5 Versuchen auf. Am hartnäckigsten ist der MS-Internetexplorer 6, er läßt sich stolze 100 mal Umleiten.

Wie kommts? Ich hatte im Zuge der Abschaltung der Verbindestrichung und HTML-Terminierung beschlossen, die alten URLs per Redirect auf die aktuelle weiterzuleiten, hatte aber einen kleinen Fehler in meinem regulären Ausdruck bei den Kategorien, es fehlte ein Bindestrich. So wurden auch die gültigen Themenseiten mit einem angehängten Schrägstrich weitergeleitet, weitergeleitet und weitergeleitet. Wenn ein Browser oder Bot keinen Weiterleitungszähler verwendet, würde wohl irgendwann der Webserver mit einem ‚414 Request-URI Too Long‘ das Handtuch werfen.

Und die Moral von der Geschicht: „Verendlosschleife Redirects niemals nicht!“ :-)

Keine Kommentare »

Wie bekommt man eingehende Links

Ganz einfach, man hat selber noch andere Webseiten, idealerweise bei unteschiedlichen Webhostern, mit denen man sich selbst kreuz und quer verlinkt. Oder man macht bei Blogaktionen, wie Stöckchen, Karneval, Schreibwettbewerben oder Verschenkungen mit. So eine Verschänkung läuft derzeit bei den Pixeljunkies, ähhm ich meine Glühweinjunkies mit einem Pixelkunstwerk. Da werde ich mir mal schnell ein Pixel holen, bevor die alle weg sind :-) So ein Pixel kann man immer mal gebrauchen.

Weitere Artikel mit Bezug zu diesem:
4 Kommentare »