Warum wird diese benutzerdefinierte Taxonomie in der database angezeigt?

Ich habe ein Plugin erstellt, das geographische Daten zu WordPress hinzufügt . Gemäß dieser Antwort sollten die Taxonomiedaten nicht in der database gespeichert werden, sie scheinen jedoch gespeichert zu sein:

mysql> select * from wp_term_taxonomy where taxonomy='geoareas' limit 10; +------------------+---------+----------+-------------+--------+-------+ | term_taxonomy_id | term_id | taxonomy | description | parent | count | +------------------+---------+----------+-------------+--------+-------+ | 953 | 699 | geoareas | | 0 | 2 | | 954 | 700 | geoareas | | 699 | 0 | | 955 | 701 | geoareas | | 700 | 0 | | 956 | 702 | geoareas | | 700 | 0 | | 957 | 703 | geoareas | | 700 | 0 | | 958 | 704 | geoareas | | 700 | 0 | | 959 | 705 | geoareas | | 700 | 0 | | 960 | 706 | geoareas | | 700 | 0 | | 961 | 707 | geoareas | | 700 | 0 | | 962 | 708 | geoareas | | 700 | 0 | +------------------+---------+----------+-------------+--------+-------+ 10 rows in set (0.00 sec) 

Warum werden diese Daten in der database gespeichert ? Und was wäre der richtige Weg, um die Daten auf register_deactivation_hook zu entfernen, da wp_delete_term() scheinbar nur die Terme und nicht die gesamte Taxonomie aus der database entfernt. Muss ich manuell alle Term-Post- und Term-CustomPostType-Verknüpfungen in der database und dann alle Verweise auf die Taxonomie selbst entfernen? Oder gibt es eine interne WP-function, die ich verwenden sollte? Das offensichtliche wp_delete_taxonomy() existiert nicht!

EDIT: Es scheint mir, dass alle Taxonomiedaten in der database in den Tabellen wp_term_taxonomy , wp_terms und wp_term_relationships sind. Wären diese drei Abfragen ausreichend, um die Taxonomiedaten aus der database in register_deactivation_hook() zu register_deactivation_hook() ?

 DELETE tr FROM wp_term_taxonomy tt INNER JOIN wp_term_relationships tr ON tt.term_taxonomy_id=tr.term_taxonomy_id WHERE taxonomy='geoareas'; DELETE tt FROM wp_term_taxonomy tt INNER JOIN wp_terms t ON tt.term_id=t.term_id WHERE taxonomy='geoareas'; DELETE FROM wp_term_taxonomy WHERE taxonomy='geoareas'; 

Solutions Collecting From Web of "Warum wird diese benutzerdefinierte Taxonomie in der database angezeigt?"

Taxonomie “Daten” ist tatsächlich in der database gespeichert. Taxonomie “Definitionen” sind nicht.

Das Zeug, das Sie in einen Aufruf von register_taxonomy eingeben, sind nicht die Daten, sondern die Definition dieser Daten. Die Daten, die Sie hinzufügen, wie Kategorien oder Tags, sind die Daten, und ja, sie werden wie alle anderen Taxonomiedaten in die Taxonomie-Tabellen aufgenommen.

Sie müssen jedes Mal register_taxonomy aufrufen register_taxonomy damit WordPress weiß, dass die Taxonomie existiert und wie damit umzugehen ist. Die Daten aus der Taxonomie stammen aus der database. Ihre Definition der Taxonomie ergibt sich aus dem Code.

Zusätzlich:

Die Frage, wie Sie die vom Benutzer eingegebenen Daten löschen sollen, ist komplexer als nur die technischen Mittel. Alle von Ihnen erwähnten Mittel funktionieren, aber die eigentliche Frage ist, ob Sie diese Daten löschen sollten . Vielleicht hat der Benutzer viel Mühe darauf verwendet, diese Geogebiete selbst zu definieren. Wenn sie dein Plugin entfernen und neu installieren und die Daten jetzt für immer verschwinden, dann ist das eine schreckliche Sache.

Auch sollten Sie solche Daten auf register_deactivation_hook nicht unbedingt entfernen, da Personen ein Plugin einfach deaktivieren und reaktivieren können. Wenn du Daten entfernen würdest, wäre es in einer uninstall.php Datei im Plugin (was natürlich nicht auf eine tatsächliche Deinstallation des Plugins und nicht nur auf eine Deaktivierung hinausläuft). Ein besserer Ansatz könnte einfach darin bestehen, dem Benutzer stattdessen eine Schaltfläche “Alle Daten löschen” bereitzustellen. Übernehmen Sie die Kontrolle über ihre Daten in ihre eigenen Hände.

Wenn die fraglichen Daten unverändert sind und irgendwie automatisch erstellt werden, kann es sinnvoll sein, sie nach einer Neuinstallation neu zu generieren, aber das ist für Taxonomien ziemlich selten der Fall. Vielleicht möchten Sie stattdessen Ihre Gesamtstrategie überdenken.