iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
WordPress

30 天用 WordPress 打造遠端團隊管理協作平台系列 第 4

[Day 4] WordPress 如何儲存資料?優點與限制

  • 分享至 

  • xImage
  •  

前言

要有效地使用 WordPress,我們必須深入理解它是如何儲存和管理資料的。此外,瞭解其內部運作方式不僅能夠幫助我們更有效地設計和建立我們的協作平台,還能使我們預測可能的挑戰並提前解決。因此,在開始我們的實作之前,我們將先探討 WordPress 的資料儲存結構

WordPress 是一個內容管理系統 (CMS)

由於 WordPress 是內容管理系統,所以 WordPress 的資料儲存單位就是「內容」,而在 WordPress 的內容會以類似文章 (Posts) 的形式儲存。
在預設的狀態下,WordPress 有三種內容類型 (Post Type),分別是「頁面 (Page)」、「文章 (Post)」與「附件 (Attachment)」,其中附件在介面上則是透過 [媒體] 的介面進行管理。

內容所具備的資料

如果我們從 phpMyAdmin 存取 WordPress 的 wp_posts (每個網站的資料表前綴不一定相同,此處以預設的 wp_ 為例) 資料表,我們可以看到下列的結構。
https://ithelp.ithome.com.tw/upload/images/20230917/20129585BnJ8iSvAq3.png
從 WordPress 的資料儲存格式中,我們可以看到每篇內容,除了標題 (post_title) 與內文 (post_content) 外,還包含了發布日期、發布者、內容狀態、可引用狀態 (ping_status)、全域單一識別碼 (guid) 等資訊。

分類法 (Taxonomy) 與內容的關聯

WordPress 預設有 4 個分類表來處理分類法,包含 wp_termswp_termmetawp_term_relationshipswp_term_taxonomy,其中 wp_term_relationships 是替內容與分類法建立關聯的重要資料表。
我們在撰寫文章時,使用到的就是預設的分類 (Category) 與標籤 (Tag) 兩種分類法。除了這兩種分類法以外,如果你安裝了 WooCommerce,那麽 WooCommerce 會再額外加「商品分類」以及商品的「屬性」等分類法。

內容中繼資料 (Post Meta)

我們接著再來看 wp_postmeta 內的資訊。
如果你是 WordPress 的使用者,你可能在追逐客製化網站的過程中,會聽到「自訂欄位 (Custom Fields)」,這就是所謂的中繼資料,也就是內容的額外資訊。
以商品來說,就是價格、型號等,預設沒有儲存在 wp_posts 裡面的額外資訊。如果是以安裝了 SEO 外掛的部落格文章來說,這些中繼資料則包含了文章的 SEO 標題、目標關鍵字等資訊。

使用內容作為遠端協作平台管理資料的優缺點

我們透過觀察資料庫,解析 WordPress 管理內容的方式後,我們可以發現透過 WordPress 的「內容」來建置遠端協作平台的優缺點如下:

作為協作平台系統的優點

  • 高度模組化與彈性:以「內容」為基礎的資料儲存方式,讓新增、編輯、刪除的過程非常容易且直覺。此外,透過自訂內容類型 (Custom Post Types) 與自訂欄位 (Custom Fields) 的搭配,可以很輕鬆的擴充客製化功能。
  • 既有外掛與佈景主題生態:由於 WordPress 有強大的佈景主題與外掛生態系,因此在尋找特定功能時,可以找到其他開發者已完成的穩定產品。包含管理自訂內容類型的 Custom Post Type UI,以及管理自訂欄位的 Advanced Custom Fields 都是已經成熟的工具。這些外掛都能夠與 WordPress 的原生功能高度整合。
  • 統一的資料儲存方式:以內容作為基礎的儲存方式,讓不同的外掛有共同溝通的基礎,因此在外掛轉移時也具有優勢。舉例來說,SEO 外掛的轉移,便是將原本的中繼資料 (post meta) 進行變更。

作為協作平台系統的缺點

  • 效能問題:隨著資料的增加,WordPress 資料庫可能會變得笨重,尤其是當 wp_postmeta 內的資訊逐漸累積時。對於大量的資料操作或高流量的網站,這可能導致效能下降。我早期開發過的一個客製化佈景主題,就因為濫用中繼資料,造成了不小的效能問題。
  • 外掛衝突問題:雖然擁有強大的外掛生態,但是外掛的品質並不好。由於多數的 WordPress 外掛,都會使用勾點機制來擴充既有的功能,這也使得外掛彼此間可能會發生動作 (action) 或篩選器 (filter) 的衝突發生。

結語

就像開發者在面臨到其他程式語言的技術選擇一樣,利用 WordPress 打造協作平台也有其利與弊。希望透過上述的分析,可以幫助你更明確地瞭解使用 WordPress 所能帶來的優點和潛在的挑戰。下一篇文章,我們將要開始設計我們的協作平台,並制定這次專案要解決的目標問題。


上一篇
[Day 3] 遠端協作平台需要的功能需求
下一篇
[Day 5] 設計遠端團隊管理協作平台
系列文
30 天用 WordPress 打造遠端團隊管理協作平台11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言