Unser Plugin (VersionPress) muss databaseänderungen verfolgen, damit es sie versionieren kann. Wir tun dies derzeit, indem db.php
und die $wpdb
Instanz darin überschreiben, aber es hat ein Problem, dass wenn irgendein anderes Plugin beschließt, db.php
zu überschreiben, ein Konflikt entsteht.
Meine Frage ist eher generisch: mir scheint, dass db.php
und das Erstellen einer Unterklasse sehr merkwürdig und ungewöhnlich Erweiterbarkeitspunkt in WordPress ist – warum ist das? Es wird wahrscheinlich einen Grund geben, warum keine Haken oder Filter verwendet werden. Liegt es daran, dass einige der Abfragen ausgeführt werden, bevor ein Plug-In geladen wird und die Abfrage beeinflussen kann? Oder aus einem anderen Grund?
Und wie man es umgeht? Wir möchten, dass VersionPress mit anderen Plugins zusammenarbeitet, die möglicherweise ihre eigene db.php erstellen. Ist unsere einzige Chance, sich in den 'query'
Filter 'query'
der leider nur unstrukturierte Query-Daten liefert?
Einfach, haken Sie den query
und strukturieren Sie diese “unstrukturierten” SQL-Daten. Parsen von SQL ist ärgerlich, kann aber nicht so schwierig sein.
Natürlich werden einige Abfragen ausgeführt, bevor Plugins geladen werden, da Sie die Liste der aktiven Plugins und des aktiven Themas abrufen müssen, bevor Sie die Datei einbinden. Und wenn Sie auf eine database wp_config.php
müssen, die sich von wp_config.php
unterscheidet oder die Einstellungen für dbname / user / password aus der Datei wp_config.php
ignoriert, müssen Sie $wpdb
bevor die erste Abfrage gesendet wird.