問題描述
如果我想保存我的插件的設置,那麼它是很容易和直接的。
現在我想保存到數據庫一點。
一個文件名,另外 3 個其他值只適用於該文件。並且有很多這些值的文件。使用內置的數據庫方法可以節省種類的子陣列嗎?如何刪除和排序等?
最佳解決方案
我很少與其他知識淵博的用户不同意,但在這種情況下,我無法幫助。在我看來,使用 non-core 數據庫表不好的做法本身就是錯誤的。
是否使用核心表或添加自己的選擇取決於幾個因素。
查詢的執行時間取決於表的大小。因此,如果您計劃存儲大量數據,則僅適用於該類型的特定數據集的單獨表格將不可避免地將是更有效的解決方案。
如果您在這些特定數據集之間存儲了大量常規帖子或 CPT,wp_posts 以及 wp_postmeta 可以快速增長。
對我來説,這個選擇最終取決於數據是如何”posty” 的。是否支持作者,評論,修訂,摘錄等?如果是這樣,我將使用 CPT 和/或核心功能。如果沒有,為了資源的使用和效率,我會分開單獨的表。
如果尤金的觀念是正確的,現有的 well-written 插件都不會添加自己的表,幸運的是不是這樣。
次佳解決方案
使用 WP 核心 DB 表是最佳做法
-
使用核心數據庫表使您的數據更便於攜帶,易於備份,因為它將由核心的出口商/進口商以及無數的備份插件
-
使用核心數據庫表使您的數據更易於操作,因為您將更直觀地訪問與查詢,添加,修改,刪除和清理數據庫數據相關的各種 WordPress 核心功能,特別是通過非常強大的
$wpdb類。 -
使用核心數據庫表鼓勵/促進數據分類和存儲的最佳實踐,例如將插件選項作為數組存儲在
wp_options中的單個行中,並強制插件開發人員仔細考慮正在創建/存儲的數據類型 CPT?是分類嗎?是後期元嗎? -
使用核心 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.
因此,我們可以得出以下結論:
-
在核心 WP 表中存儲數據 (設置或 user-generated) 是最佳做法
-
有有效的 use-cases 用於創建自定義 DB 表; 因此,創建自定義數據庫表不能被視為固有的不良做法
-
創建自定義 DB 表時,WordPress 提供了一個 best-practice 實現
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。