一文說透WordPress的自定義文章類型

轉自丘壑博客javascript

從2004年的1.0版本算起,WordPress在14年間已經迭代開發到了5.x版。若是說這中間哪一個版本是一個質的提高的話,那應該算是2010年發佈的代號爲css

3.0版。這個版本發佈了不少重要的功能,好比多站點、主題API等等,其中一個就是 Custom Post Type(自定義文章類型)。

雖然WordPress 2.9 版也引入了register_post_type()函數,但並非很好用,在CMS市場上競爭力並非很強。3.0版的register_post_type()函數變的更好用了,同時這也使得WordPress從一個單純的博客管理系統( blogging system)變成一個真正意義上的能夠管理各類內容的內容管理系統(CMS)。java

什麼是文章類型(Post Type)?

Post Type,字面意思就是「文章類型」或者叫「帖子類型」,其實更準確的說法應該叫「內容類型」,是WordPress用來區分不一樣類型不一樣用途的內容的一個術語。面試

Post Type 應該算是一個業務術語,而不能算做一個技術術語。由於從本質上講,它們都是WordPress業務數據庫裏同一個數據表數據庫

中的數據,數據結構都是同樣的,不一樣的Post Type之間的區別就是在
post_type
這個字段。見下圖:

Internally, all the
post types
are stored in the same place, in the
wp_posts
database table, but are differentiated by a column called
post_type
.

在3.0版本以前 ,WordPress自帶的默認Post Type只有兩種最基本的類型:post和page,後來又擴展了以下幾種默認類型:安全

  • Post (Post Type: ‘post’) 文章
  • Page (Post Type: ‘page’) 頁面
  • Attachment (Post Type: ‘attachment’) 附件
  • Revision (Post Type: ‘revision’) 自動保存的文章版本
  • Navigation Menu (Post Type: ‘nav_menu_item’) 導航菜單
  • Custom CSS (Post Type: ‘custom_css’) 自定義CSS
  • Changesets (Post Type: ‘customize_changeset’) 自定義的設置
  • User Data Request (Post Type: ‘user_request’ ) 用戶請求

Post Type這個名字很是不友好,很容易讓人誤解和迷惑。Post這個單詞通常都會被理解成文章,但那些並非文章(post)的內容(見上面的列表),也被納入文章類型(Post Type),因此叫作內容類型(content type)或許更準確。數據結構

雖然都是屬於Post Type,但不全都是Post。這中間的差異,舉個例子就能理解了:麪包、麪條、麪粉、面料、面試都是字頭,但又不全都是。。。ide

什麼是自定義文章類型(Custom Post Type)?

你能夠把全部內容更都用默認的文章頁面這兩種類型來編輯和管理,反正都是數據而已,但這樣帶來的問題就是混亂,很差管理。這就比如無論什麼菜都用一種作法,一鍋亂燉,反正裝盤都能吃。wordpress

不一樣的菜固然有不一樣的管理方式和料理方式,甚至不一樣的餐具。一樣的道理,不一樣的內容也須要區別對待。因此除了默認的Post Type以外,還有一個重要的類型就是Custom Post Type–自定義文章類型,就是用來知足內容生產者的不一樣需求。函數

那麼自定義文章類型到底能夠作什麼用呢?能幹什麼這主要取決於你本身的需求和內容定位,沒有什麼規定,只要你願意,什麼樣的內容均可以定義成一種type,理論上說,你能夠用Custom Post Type來幹存任何你想要存的數據。隨便舉幾個例子:

  • 公司信息、項目數據,好比用WordPress作一個相似36kr的創業項目信息庫
  • 電影、書籍數據,好比用WordPress作的電影信息展現網站
  • 產品信息,用WordPress作的電商平臺
  • 說明文檔
  • 論壇數據
  • 食譜
  • 設計稿
  • 歌詞
  • 活動
  • av
  • 殭屍
  • 等等等

總之,自定義文章類型(CPT)就是你的內容內容存儲方式。無論哪一種類型的內容,基本在WordPress中都是能夠實現的。

只要遇到了一些信息你以爲可能用默認的文章或者頁面的形式很差展示,那麼可能你就須要用到自定義文章類型了。

還有一種情形下也能夠考慮使用自定義文章類型,當你使用了不少的頁面(page),並給頁面作了父子層級的時候,若是層級超過了十個,那麼多半這些頁面都屬於一種類型了,好比說一個公司能提供多種多樣的services(服務),都用頁面形式的話也是能夠的,但這種場景下,考慮用新建一個自定義文章類型叫作services(服務)可能會更方便。

或者當你頻繁的使用文章的某一個分類,或者而且爲了想要對某些內容的URL作一些自定義等等狀況下,均可以考慮一下使用自定義文章類型了。

若是你對此不熟悉,那多半多是由於你沒有這方面的需求,沒有用到而已,現有默認的文章和頁面兩種默認的Post Type已經能知足你的需求了。若是你的網站內容比較特殊,那麼就頗有必要好好了解一下自定義文章類型了,很好很強大。

自定義文章類型(Custom Post Type)不是什麼?

WordPress裏面能夠自定義的部分很是多,很是靈活,這也正是WordPress的強大之處。這也帶來一個問題就是關於自定義的術語也比較多,初學者會比較容易混淆。下面也稍微解釋一下它們之間的區別。

自定義文章類型(Custom Post Type)不是普通意義上的文章(post),上面已經說過了。

自定義文章類型(Custom Post Type)也不是自定義字段(custom fields)的替代品。實際上自定義字段是做爲內容的一部分或補充相關功能,好比一個內容類型爲電影的自定義字段能夠有不少:導演、演員、風格、海報等等等。這方面的插件就是以前結果過的Meta BoxAdvanced Custom FieldsCode Embed

自定義文章類型(Custom Post Type)也不是自定義分類(Custom taxonomies)。好比你有了一個自定義類型是電影,這時候用文章的分類可能就不適用了,須要添加自定義分類法,好比奇幻、恐怖、愛情、動做等等。

爲何要使用自定義文章類型?好處和優點

使用自定義文章類型有幾個好處:

  1. 更好的顯示形式。內容決定形式,形式影響內容。某些場景形式重於內容,某些場景內容重於形式,主要仍是取決什麼樣的內容。在WordPress中能夠針對自定義文章類型使用專門的頁面展現顯示形式,自由設置不一樣於默認文章的顯示樣式,以便突出顯示這類內容,聚焦優質內容。
  2. 更好的過濾結果。在須要按條件顯示WordPress文章時WP_Query默認的搜索是Post, 這時默認會把自定義文章類型排除出去,除非你特地指明瞭須要的類型,這樣能夠對過濾結果有更好的控制。
  3. 更好的編輯內容。在內容管理後臺中,不一樣的內容類型也須要不一樣的組織、編輯流程。
  4. 更好的用戶體驗。若是你是一個開發者,服務的用戶羣體是特定行業的從業者,他們不必定懂代碼,也不必定能搞清楚文章、頁面等等之間的區別,那麼最簡單的方法就是爲他們量身打造一套自定義文章類型和發佈流程,讓工具去適應用戶,而不是讓用戶去適應內容。
  5. 更好的安全性。
  6. 更高的效率。
  7. 更友好的URL展現

總之,自定義文章類型(custom post types )可讓你自定義管理你的內容,使建立、編輯、管理更容易更高效,而且能以更好更方便的形式展示出來。

建立自定義文章類型的方法

當你決定了開始使用自定義文章類型以後,首先面對的問題就是,應該怎麼弄?方法不少。

通常來講有兩種方法能夠建立自定義文章類型:1. 手寫代碼 2. 經過插件的方式來建立。

WordPress自身並無在後臺提供一種可視化的界面來建立自定義文章類型,可是有不少插件也能夠實現可視化建立。

首先能夠搜索看下是你的內容類型否已經有插件能夠知足需求了,好比電商插件WooCommerce這類高級插件都會建立本身的post type。WooCommerce的自定義類型就是Products,也有相應的編輯後臺和分類,通通都幫你作好了,直接使用就能夠了。

若是內容類型比較特殊,沒有徹底符合的插件,那麼能夠考慮使用自定義文章類型可視化建立插件。好比Pods – Custom Content Types and FieldsCustom Post Type Maker、還有官方推薦的Custom Post Type UI ,後面會寫一些這幾個插件的詳細使用用法。

用插件的方式固然是很是方便的,但同時也會有一些缺點:會引入不少不不要的代碼和數據,由於是通用行的解決方案,全部它們須要兼顧的方面比較多,有些是並不須要的需求,再一點,雖然這些插件的基礎功能大都是免費的,可是高級功能仍是須要付費的。

因此,最後還有一種終極方案就是本身手寫代碼來實現徹底定製化了,下一篇文章再寫。

參考文獻:

相關文章
相關標籤/搜索