WordPress自定義帖子類型辯論


眾所周知,上週Syed Balkhi參加了WordCamp Raleigh2012。活動期間,他的其中一條推文引發了一場激烈的辯論。 在本文中,我們的創始人Syed Balkhi將辯論WordPress Custom Post Types是否屬於functions.php文件或插件。 以下是引發這場辯論的推文:

鳴叫之後,WordPress社區中的許多知名人士加入了。您可以在此處查看完整的對話。 柯蒂斯·麥克海爾(Curtis McHale)更進一步,在他的新博客文章中對該主題進行了詳細說明。

來自Twitter的談話提出了一些要點。

論點摘要

插件參數: 用戶即使更改主題也將始終具有數據。 它可能看起來不那麼漂亮,但是會留在那裡。

Functions.php參數: 沒有設計的數據將是無關緊要的。 它將使用戶更加困惑。

您更同意哪一邊? 顯然雙方都有自己的問題,但是兩種弊端中哪一個較小?

這就是為什麼我們認為自定義帖子類型應該 總是 駐留在特定於站點的插件中,或者完全放在單獨的插件中。

長期數據

自定義帖子類型是數據。 在大多數情況下,您的數據將超過當前設計的壽命。 幾次更改主題後,我們清楚地理解了這一說法。 帖子,頁面,鏈接,附件和修訂是WordPress內置的所有類型的帖子類型。 最重要的是,我們擁有書籍,推薦書,特惠等職位類型。現在您能想像我們是否改變主題並消失了? 當然,我們不希望這種情況發生。

在我們的團隊中有開發人員,這無關緊要。 考慮到我們所有的主題都是由我們的團隊定制設計的,這真的有什麼區別? 秘密在於兩個詞:時間和集中化。 只要我們擁有所有必要的數據,將來我們要做的就是更改樣式。 我們不必擔心每次都將功能從一個文件複製和粘貼到另一個文件中。 如果要復制功能怎麼辦? 只需將插件放到新站點中即可。 更改樣式,即可完成。

規則與標準

當您像在推文中一樣使用ALWAYS一詞時,它既可以表示規則,也可以表示標準。 規則和標準都是針對大多數人制定的。 在某些特殊情況下,總是會彎腰規則而違反標準,但這並不意味著我們應該完全擺脫標準。

有許多通用的帖子類型,它們大多需要相同的一組附加元字段。 我想到的一些例子是:報價,書籍,食譜,推薦書,公文包等。

考慮到免費和商業市場上有大量攝影和作品集主題,使用戶每次更改主題時都重新輸入其所有自定義帖子類型信息幾乎沒有任何意義。 讓我們看一個示例案例:

攝影家 –用戶設置具有博客功能的WordPress(默認為“發布” CPT)。 他想添加自己的作品集(需要有作品集CPT)。 他想顯示客戶推薦書(需要推薦書CPT)。 所有這些信息肯定會超出主題設計的範圍。 一年後,用戶希望更改其網站的外觀並對其進行刷新。 查找具有所有相似功能的新主題。 當他切換主題BOOM的那一刻。 他輸入的所有先前數據都消失了。 有一個名為Portfolio的菜單和一個名為Testimonials的菜單,但是其中沒有任何數據。 用戶的想法是“神聖崩潰,我失去了所有內容”。 在論壇中創建新的支持問題。 將電子郵件發送到WPBeginner等網站。如果沒有收到滿意的答复,則他們將不得不重新輸入所有數據。 這是糟糕的用戶體驗。

那麼我們如何解決這個問題呢?

可能的解決方案?

我們創建一個新的標準庫。 賈斯汀·塔德洛克(Justin Tadlock)已經通過創建基本的產品組合插件開始處理此問題。 它將是每個人的完美解決方案嗎? 不,但這將是大多數。

正如Justin在帖子中所問的那樣,投資組合插件中應包含哪些標準字段(指發布元)。 這種對話需要在以主題創建類似功能的開發人員之間進行。 為什麼可以通過插件將相同的內容一遍又一遍地複制並粘貼到另一個主題? 一旦成為標準,其他主題作者將開始適應它。

例如,我們發現WordPress主題框架(如Genesis)等中對Gravity Forms的樣式支持有所增加。 為什麼? 因為他們了解他們的用戶正在使用它。

有一些強大的WordPress主題,其中包含我們認為應該是插件的功能。 工作委員會主題,問題跟踪主題,分類廣告主題,房地產主題等。它們均應由基本插件提供支持。 WooCommerce已經在發生這種情況。 WooThemes發布了許多主題,這些主題具有對插件的內置樣式支持。 其他主題公司也承諾將發布基於WooCommerce的電子商務主題。 您可以從一個主題切換到另一個主題,並保持所有產品不變。 這幾乎就像主題已更改,但一切都恰到好處。 這就是我們需要努力改變的主題。

為什麼不對投資組合,推薦書和其他通用自定義帖子類型做同樣的事情? 是因為它太簡單了,而電子商務卻是征服更大的野獸? 顯然,與其他領域相比,電子商務具有太多的字段,因此對於這些通用帖子類型而言,它應該容易得多。 只是有意識地努力使事情變得更好。

看看ReciPress插件。 它使用配方字段創建一個自定義元框,並將其附加到帖子中。 但是,可以將其附加到自定義帖子類型。 使用此插件的任何人都可以更改主題,而不必經歷這樣的麻煩。

很高興看到諸如AgentPress之類的主題由集中式基本插件提供支持。 很高興看到主題更改的過渡變得更加容易。 例如,如果用戶從一個攝影主題切換到另一個攝影主題,則不應太混亂。 可能會發生較小的錯誤,但至少在更大的範圍內,事情會奏效。

您始終可以提供為一次性客戶端使用而創建的超級自定義帖子類型的示例,但這是例外,並非常規。

你們如何看待這個話題? 自定義帖子類型代碼應放在哪裡? 在functions.php文件中還是在插件中?