问题描述

如果我想保存我的插件的设置,那么它是很容易和直接的。

现在我想保存到数据库一点。

一个文件名,另外 3 个其他值只适用于该文件。并且有很多这些值的文件。使用内置的数据库方法可以节省种类的子阵列吗?如何删除和排序等?

最佳解决方案

我很少与其他知识渊博的用户不同意,但在这种情况下,我无法帮助。在我看来,使用 non-core 数据库表不好的做法本身就是错误的。

是否使用核心表或添加自己的选择取决于几个因素。

查询的执行时间取决于表的大小。因此,如果您计划存储大量数据,则仅适用于该类型的特定数据集的单独表格将不可避免地将是更有效的解决方案。

如果您在这些特定数据集之间存储了大量常规帖子或 CPT,wp_posts 以及 wp_postmeta 可以快速增长。

对我来说,这个选择最终取决于数据是如何”posty” 的。是否支持作者,评论,修订,摘录等?如果是这样,我将使用 CPT 和/或核心功能。如果没有,为了资源的使用和效率,我会分开单独的表。

如果尤金的观念是正确的,现有的 well-written 插件都不会添加自己的表,幸运的是不是这样。

次佳解决方案

使用 WP 核心 DB 表是最佳做法

  1. 使用核心数据库表使您的数据更便于携带,易于备份,因为它将由核心的出口商/进口商以及无数的备份插件

  2. 使用核心数据库表使您的数据更易于操作,因为您将更直观地访问与查询,添加,修改,删除和清理数据库数据相关的各种 WordPress 核心功能,特别是通过非常强大的 $wpdb 类。

  3. 使用核心数据库表鼓励/促进数据分类和存储的最佳实践,例如将插件选项作为数组存储在 wp_options 中的单个行中,并强制插件开发人员仔细考虑正在创建/存储的数据类型 CPT?是分类吗?是后期元吗?

  4. 使用核心 DB 表时,您的插件不太可能留下 cruft 。

WordPress 为插件提供了一种方法来将表添加到其数据库

但是,对于那些需要单独的 DB 表的用例,特别是 be sure to use the method that WordPress provides for adding your custom table to the WordPress database,您可以利用强大的 $wpdb 类。请注意此食典条目列出的信息/注意事项:

  • Setup information — user choices that are entered when the user first sets up your plugin, and don’t tend to grow much beyond that (for example, in a tag-related plugin, the user’s choices regarding the format of the tag cloud in the sidebar). Setup information will generally be stored using the WordPress options mechanism.

  • Data — information that is added as the user continues to use your plugin, which is generally expanded information related to posts, categories, uploads, and other WordPress components (for example, in a statistics-related plugin, the various page views, referrers, and other statistics associated with each post on your site). Data can be stored in a separate MySQL table, which will have to be created. Before jumping in with a whole new table, however, consider if storing your plugin’s data in WordPress’ Post Meta (a.k.a. Custom Fields) would work. Post Meta is the preferred method; use it when possible/practical.

因此,我们可以得出以下结论:

  1. 在核心 WP 表中存储数据 (设置或 user-generated) 是最佳做法

  2. 有有效的 use-cases 用于创建自定义 DB 表; 因此,创建自定义数据库表不能被视为固有的不良做法

  3. 创建自定义 DB 表时,WordPress 提供了一个 best-practice 实现

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。