Archive for the ‘ Wordpress ’ Category

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!

File upload via AJAX in WordPress

Ich habe ein interessantes Tutorial zu File-Uploads via AJAX in WordPress3 gefunden, dass ihr für eure Costum-Post-Types verwenden könnt.

 

WordPress Nachrichten für Administratoren

Wer kennt das nicht: man installiert ein Plugin, ändert Optionen, es ändert sich nichts oder das falsche und schlussendlich ärgert man sich, weil man nicht weiß, was passiert und warum es passiert. Dabei ist es so einfach, heutzutage ein komfortables Plugin bereit zu stellen, dass dem Benutzer Meldung erstattet!

WordPress bietet dazu einen Hook an, an den man sich einklinken kann: ‚admin_notices‘. Wird auch genausoleicht verwendet, wie jeder andere Hook:

add_action(‚admin_notices‘, ’name_of_function_which_shall_be_called_goes_here‘);

In diesem Hook gibt man bestmöglich ein ‚div‘ aus, dessen ID ‚message‘ ist und dessen Klasse zwischen folgenden auswählen kann: ‚updated‘, ‚error‘, ‚updated highlight‘ und ‚updated below-h2‘ (letzteres lässt die Überschrift unter die Benachrichtigungsbox verschwinden). Vergesst die p-Tags nicht, damit das Ganze validiert.

function name_of_function_which_shall_be_called_goes_here() { echo ‚<div id=“message“><p>Your text goes here.</p></div>‘; }

Alles andere liegt dann bei euch.

WordPress Backup mittels PHP erstellen

Ich habe nach einer Möglichkeit gesucht, MySQL Datenbanken via PHP zu exportieren. Gefunden habe ich zwei SQL-Befehle, die tatsächlich gut funktionieren und auch bei der Entwicklung von WordPress-Plugins Verwendung finden könnten:

Export-Query: SELECT * INTO OUTFILE ‚filename.sql‘ FROM tableName
Import-Query: LOAD DATA INFILE ‚filename.sql‘ INTO TABLE tableName