SchlagwortWordPress

$wpdb->insert funktioniert nicht ohne erkennbaren Grund

Die Insert-Funktion der WordPress-eigenen Datenbankklasse ist bekanntermaßen sehr nützlich.
Allerdings gibt es eine wenig dokumentierte Einschränkung, welche einen an den Rand der Verzweiflung treiben kann.

Sofern man nämlich bspw. an ein als VARCHAR definiertes Feld mit einem String über die $wpdb->insert-Funktion füllen möchte, darf dieser String nicht länger als sein, als in der MySQL-Tabelle definiert. Ansonsten tut WordPress nämlich einfach gar nichts; keine Fehlermeldung, keine last_query, niente!

Zu allgemein? Wenn ich ein Feld „plz“ mit VARCHAR(5) definiert habe und über $wpdb->insert „123456“ zu schreiben versuche, passiert einfach gar nichts.

Nun kann man natürlich danach schreien, dass man doch alle Daten vor dem Schreiben validieren muss, aber MySQL selbst hat sich da gar nicht so. MySQL schneidet den String einfach ab und gut ist. Ein Insert über $wpdb->query funktionert natürlich, da es ja nur ein Wrapper für eine MySQL-Abfrage ist.

Wie lassen sich in WordPress Medien aus der Mediathek in einem Plugin auswählen bzw. einfügen?

Einbinden der Skripte:

Ausschnitt aus einem tabellarischen Formular (PHP):

Passender JavaScript-Code (jQuery)

Das WordPress-Plugin Sucuri zeigt nach dem Einschalten zusätzlicher Scanner auf der Settings-Seite nur noch einen Serverfehler 500

Ja nach Konfiguration Eures Webservers laufen nicht alle Scanner von Sucuri problemlos durch. Das wäre nicht so tragisch, wenn man die jeweilige Scan-Engine einfach wieder über die Settings abschalten könnte.

Leider funktioniert das nicht immer, denn bereits beim Aufruf der Settings bekommt man einen 500er geworfen.

Um trotzdem an die Einstellungen über Settings zu gelangen, reicht es, an die URL „&no_scan=1“ (ohne Anführungszeichen) anzuhängen. Schon gibt es wieder Zugriff auf die Settings.