Uninitialized string offset: 0 in / path-to-wp /wp-includes/meta.php on line 921

rust 2475395 1920

Bildquelle: Pixabay, bhagath

Gewiss, es ist kein gängiger Fehler, der mir neulich beim Aufräumen einer älteren WordPress-Installation unterkam. Jedenfalls habe ich ihn bisher noch nie gesehen. Die Notice dazu trat nach dem Speichern eines bestimmten Beitrags im Debuglog auf. Einen schlüssigen Hinweis auf die Ursache gab die Zeile 921 in der wp-includes/meta.php.

Diese Funktion soll feststellen, ob der Name (Schlüssel) eines benutzerdefinierten Feldes mit „_“ beginnt und ein geschützter Schlüssel ist. Der Fehler weist darauf hin, dass der Wert den die Funktion erhielt, leer war.

Beim Anzeigen der Meta-Box für benuterzdefinierte Felder zeigte sich, dass am Anfang ein Key-Value-Paar eingetragen war, bei dem sowohl Schlüssel als auch Wert fehlten. Nach dem Löschen des Eintrags trat der Fehler nicht mehr auf.

Die wahrscheinlichste Ursache ist, dass es sich hierbei um die Hinterlassenschaft eines Plugins handelte, das benutzerdefinierte Felder einbrachte die nicht mit einem Underscore vor der Erfassung im $_POST['meta']-Array geschützt waren. Als das betroffene Feld nicht mehr Bestandteil der Plugin-Daten war, blieb ein leerer Eintrag im Meta-Array zurück.

Plugins oder Themes die Daten in benutzerdefinierten Feldern speichern und selbst für deren Erfassung beim Speichern sorgen, sollten die Feldnamen mit einem Underscore beginnen lassen um zu vermeiden, dass in der Standard-Metabox für benutzerdefinierte Felder ein weiteres Mal geführt werden. Alternativ kann die Unterstützung für benutzerdefinierte Felder auch deaktiviert werden, sofern sichergestellt ist, dass sie nicht benötigt werden.

add_action( 'init', 'my_remove_post_type_support', 10 );
function my_remove_post_type_support() {
    remove_post_type_support( 'post', 'custom-fields' );
}

weitere Beiträge zu:

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

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

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable