我创建了一个插件add geographic data to Wordpress. 根据this answer 分类法数据不应存储在数据库中,但它似乎是存储在:
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)
Why is that data stored in the database? 删除上的数据的正确方法是什么
register_deactivation_hook
自从
wp_delete_term()
似乎只是从数据库中删除了术语,而不是整个分类法。我是否需要手动删除数据库中的所有术语Post和术语CustomPostType关联,然后删除对分类法本身的所有引用?或者是否有我应该使用的内部WP功能?显而易见的
wp_delete_taxonomy()
不存在!
EDIT: 在我看来taxonomy data 存储在数据库中的存储在wp_term_taxonomy
, wp_terms
, 和wp_term_relationships
表格。这三个查询是否足以清除taxonomy data 从上的数据库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\';
最合适的回答,由SO网友:Otto 整理而成
分类法“数据”确实存储在数据库中。分类法“定义”不是。
你打电话给register_taxonomy
不是数据,而是数据的定义。您添加的内容(如类别或标记)是数据,是的,它与任何其他分类数据一样进入分类表。
你需要打电话register_taxonomy
每次都是为了让WordPress知道分类法的存在以及如何处理它。分类法中的数据来自数据库。分类法的定义来自代码。
其他:
如何删除用户输入的数据的问题实际上比技术手段更复杂。所有这些都意味着你提到了工作,但真正的问题是你是否应该删除这些数据。也许用户自己在定义这些地理区域时付出了很多努力。如果他们删除并重新安装了你的插件,数据现在就永远消失了,那就太可怕了。
此外,您绝对不应该删除register_deactivation_hook
, 因为人们可以很容易地停用和重新激活插件。如果要删除数据,将进行卸载。插件中的php文件(毫不奇怪,它只在实际卸载插件时运行,而不仅仅是停用)。更好的方法可能只是为用户提供一个“擦除所有数据”按钮。将数据控制权交给他们自己。
如果所讨论的数据是不变的,并且是以某种方式自动创建的,那么在新安装后重新生成它可能是有意义的,但对于分类法来说,这种情况非常罕见。可能需要重新考虑您的总体战略。