Der berühmte ‚Are you sure you want to do this? Please try again.‘ Fehler

I described my problem and the solution in the wordpress support forum in ENGLISH.

Neulich, beim Programmieren eines WordPress Plugins, bin ich erstmals auf diesen Fehler gestoßen. Die WordPress-Support-Seite hat mir wenig geholfen, das Forum von WordPress.org geht über mit unbeantworteten Fragen bezüglich dieses Fehlers – alle mit unterschiedlichem Setup, mit und ohne Plugins und mit unterschiedlichen WordPress Versionen.

Nachdem ich meinen Fehler gefunden habe und den Fehler für „schnell gemacht und leicht behoben“ halte, möchte ich ihn mit euch teilen:

Das Auftreten des Fehlers

Der Fehler überraschte mich beim Erstellen des ersten Posts in einem eigenen Post-Type. Beim Speichern und Veröffentlichen des Eintrags leitete er mich auf die Fehlerseite „Are you sure you want to do this?“ und verlinkte mich zurück auf die vorherige Seite.

Finden des Fehlers

Im wp-config.php File im Stammordner eurer WordPress-Installation könnt ihr die globale Konstante „WP-DEBUG“ auf true setzen. WordPress zeigt euch dann viele Fehlermeldungen mehr als vorhin an.

In der Meta-Box zum Speichern des Eintrags ist mir folgender Fehlereintrag aufgefallen: [Wordpress Version 3.0.4]

Notice: Trying to get property of non-object in….\wordpress\wp-admin\includes\meta-boxes.php on line 18

Gleich mal nachgesehen, was denn da steht …

Wir befinden uns in der Funktion post_submit_meta_box($post) und wollen in Zeile 17 $can_publish = current_user_can($post_type_object->cap->publish_posts); auf ein „Nicht-Objekt“ zugreifen. Das erste Objekt, auf das wir in dieser Zeile zugreifen wollen, ist das Objekt $post_type_object. Erkennen kann man einen Objekt-Zugriff nicht nur am Namen „post_type_object“ sondern auch an der Zugriffsweise: $objekt->varibale steht für einen Zugriff auf eine Objektvariable. Nachdem WordPress eine WordPress-eigene Funktion verwendet, um dieses Objekt zu erzeugen, nehme ich an, die Funktion stimmt und frage mich, was es denn für ein Objekt zurück liefert – scheinbar ist was mit den Daten falsch.

Der Fehler

Kurzerhand habe ich die Datei meta-boxes.php verändert und zwischen Zeile 16 und Zeile 17 folgende Zeile zusätzlich eingefügt: print_r($post); — daraufhin erscheint, wenn ihr zum Testen auf die Erstellen-Seite des Post-Types geht, in der Meta-Box zum Speichern des Eintrags eine laaaange Buchstaben-Wurst. Schöner formatiert wird sie euch, wenn man echo „<pre>“.print_r($post,1).“</pre>“; schreibt.

Diese Buchstabensuppe stellt euren Post dar. In meinem Fall hatte der post_type des Objekts $post nicht gepasst: er war abgeschnitten! Und das war auch schon der Trick bei der Sache: mein Plugin erstellt für mein Plugin einen „unique“ String, der dann auch für das Identifizieren von meinen Post-Types verantwortlich ist/war – und zusammengesetzt war das einfach zu lang! Also hab ich den „unique“-String allgemein gekürzt und siehe da, der post_type meines $post-Objekts war wieder vollständig und die Fehlermeldung verschwunden!

P.S: Vergesst nicht darauf, dass ihr eure Änderungen an den Dateien wp-config.php und wp-admin/includes/meta-boxes.php wieder rückgängig macht!

Advertisements
  1. No trackbacks yet.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: