Wie vermeidet man Konflikte mit db.php / $ wpdb und anderen Plugins, die sich dafür entscheiden, sie zu benutzen?

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?

Solutions Collecting From Web of "Wie vermeidet man Konflikte mit db.php / $ wpdb und anderen Plugins, die sich dafür entscheiden, sie zu benutzen?"

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.