dbDelta() ist so eine WordPress-Funktion, die einem immer ein bisserl Kopfzerbrechen bereitet aber extremst hilfreich ist.
Worum geht’s bei dbDelta()?
Die Developer-Seite sagt:
Modifies the database based on specified SQL statements.
Also:
Ändert die Datenbank aufgrund von angegebenen SQL-Anweisungen.
Die Funktion ist sehr hilfreich wenn’s darum geht, eine neue, eigene Tabelle anzulegen. Wenn mir die WP eigene Tabellenstruktur nicht ausreicht und ich mit WP-Bordmitteln (Funktionen) also eine Tabelle erzeugen will.
Doch nicht nur erzeugen ist möglich, auch das Abändern.
Genau da wird’s praktisch! Ich kann meine eigenen Tabellen ohne großen Aufwand, ohne große Überlegungen ändern.
Also Spalten einfügen, Datentypen anpassen o.ä.
Was dbDelta() in dem Zusammenhang nicht kann, ist löschen.
Die Probleme?
Man muss sehr genau sein, was die Anweisungen für dbDelta() betrifft.
Genau heißt in dem Fall, dass es sogar auf ein Leerzeichen zu viel ankommt oder auf die komplette Großschreibung einzelner Wörter.
Die genaue Liste der einzelnen Problemfelder von dbDelta() ist bei folgenden Links ersichtlich:
https://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table
http://wordpress.stackexchange.com/questions/78667/dbdelta-alter-table-syntax/78670#78670
Hilfe in Sicht?
Ja! Es tut sich natürlich immer irgendwo etwas im WordPres-Universum.
Dominik Schilling, ein Core-Entwickler hat Verbesserungen angekündigt, die zb. die oben angesprochenen Probleme beheben.
https://twitter.com/ocean90/status/753244345629827072
https://make.wordpress.org/core/2016/07/13/dbdelta-updates-in-4-6/
Wer sich für die noch offenen Baustellen interessiert wird hier fündig:
https://core.trac.wordpress.org/query?status=!closed&summary=~dbDelta
https://developer.wordpress.org/reference/functions/dbdelta/
https://codex.wordpress.org/Creating_Tables_with_Plugins