WordPress 3.5 und die PHP Warning: Missing argument 2 for wpdb::prepare() Fehlermeldung

Einige werden es bereits gemerkt haben. Nach dem Update auf WordPress 3.5 werfen einige Themes und Plugins eine Fehlermeldung aus, die in etwa so aufgebaut ist:

PHP Warning: Missing argument 2 for wpdb::prepare()

gefolgt von Zeilennummern diverser Skriptdateien (meistens beteiligt: die wp-includes/wp-db.php), in denen der Fehler auftritt.

Zur Entwarnung:

Mit eurer WP Installation ist alles in Ordnung, mit euren Blogs im Prinzip auch.

Diese Fehlermeldung tritt auf, weil einige der Plugins oder Themes noch nicht auf eine Sicherheitsänderung in WordPress eingestellt sind. Seit der Version 3.5 verlangt die wpdb->prepare Funktion in WordPress, dass Variablen nicht direkt in der Abfrage übermittelt werden, sondern als Argument.

Vorher ging diese prepare Abfrage einfach so durch:

 

$wpdb->prepare("SELECT * FROM table WHERE id = $id");

 

Diese Abfrage wird ab WP 3.5 und aufwärts so fomuliert:

 

$wpdb->prepare("SELECT * FROM table WHERE id = %d", $id);

 

Als reine Anwender müsst ihr nicht wissen, was das genau bedeutet – aber soviel sei gesagt, es erhöht die Sicherheit einer WordPress Seite.

In diversen Techblog- und WordPress-Blogs habe ich gelesen, dass die User den Fehler selbst beheben oder die entsprechenden Plugin- und Theme-Entwickler auf den Blogbeitrag von Andrew Nacin auf wordpress.org hinweisen sollen. Nun, ersteres scheidet bei wohl 90% der User aus und die zweite Methode bringt wenig, wenn das Plugin nur unregelmäßig gepflegt wird. Als 08/15 Nutzer kann man nur hoffen, dass die Entwickler und Programmierer den Fehler bereits behoben und eine aktuelle Version ihres Plugins herausgebracht haben. Dann einfach updaten und alles ist wieder in Ordnung.

In der Zwischenzeit könnt Ihr aber zumindest die Ausgabe der Fehlermeldung unterdrücken, womit dann wenigstens keine Serverpfade Eurer Plugins ausgegeben werden.

Einfach in die Datei wp-config.php des WordPress Wurzelverzeichnis diese Codezeile einfügen:

@ini_set('display_errors', 0);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.