如何在 WordPress 中實現自定義帖子類型和自定義字段

已發表: 2014-06-10

WordPress 不再僅限於寫博客——它是一個功能齊全的內容管理系統,能夠顯示和格式化您提供的任何類型的內容。 因此,讓我們談談擴展 WordPress 的兩種好方法:自定義帖子類型和自定義字段。

自定義帖子類型

看起來我們的測試站點 Monday Morning Mug(我們在電子郵件集成博客文章中使用過)有一個新問題需要處理。 我們的博客變得如此龐大,以至於我們聘請了一名全職的咖啡評論員。 他們一直在忙著煮咖啡和寫評論。 他們一直在博客上發布這些評論,但我們的讀者告訴我們,所有這些評論都妨礙了我們“真實”的博客內容。 我們需要為我們的咖啡評論創建一個單獨的地方,但普通的 WordPress 頁面不會削減它。 評論者還一直建議他們希望有一個地方可以在網站上輕鬆存儲信息,例如咖啡來自的國家和品嚐筆記。 這聽起來像是自定義帖子類型的完美用途,這是一種 WordPress 功能,允許我們在我們的網站上創建新的內容部分。

自定義帖子類型非常靈活,可以針對任何類型的內容實施:引號、視頻和不同色調的油漆都是自定義帖子類型的示例。

我們將要在/coffees/子目錄中添加我們網站的一個新部分,該部分充滿了咖啡評論。 這將需要一些代碼爭論,但它應該是一個相對簡單的過程。

注意:為此,您需要能夠編輯 WordPress 安裝目錄中的 .php 文件,這通常需要 FTP/SFTP/SSH 訪問權限。 在繼續之前確保你有這個。

每個 WordPress 主題都可以使用 functions.php 文件,該文件位於:
/wp-content/themes/your_current_theme/functions.php
該文件通常用於特定主題的站點更改以及較小的自定義站點修改,例如我們即將進行的修改。

注意:我們將向functions.php文件添加代碼,這意味著它是特定於主題的。 如果您將此添加到您的 functions.php 文件,然後更改 WordPress 安裝的主題,您將從您的網站中刪除自定義帖子類型。 您可以通過使用插件來維護自定義內容類型,例如自定義帖子類型 UI。

1.打開你的 functions.php 文件並在文件底部添加以下代碼:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

因為我們不特別喜歡在不知道代碼的作用的情況下使用代碼,所以讓我們來看看這段代碼的作用。

注意:您可能已經註意到$labels$args是在register_post_type()函數之外定義的,即使它們稍後只是作為參數傳遞給該函數。 此方法有助於組織和可讀性,但您可以將兩個數組壓縮為一個參數。 只會更難理解。

$args數組包含我們定義新內容類型所需的所有細節。 以下是它們的作用:

  • 'labels' - 一個數組,定義我們將稱之為內容類型的內容。 您可以使用更多標籤,完整列表可在此處的文檔中找到。
  • 'public' - 一個布爾值,用於定義帖子是否可以在管理面板之外查看。
  • 'has_archive' - 如果為真,此佈爾值將創建此類自定義帖子的存檔,就像標準 WordPress 帖子一樣。
  • 'menu_position' - 這個整數會改變你的自定義帖子導航按鈕的位置。 數字 5 表示它將直接位於帖子選項卡的下方。 有關數字代碼的完整列表,請查看相同的文檔。
  • 'description' - 描述帖子類型。
  • 'rewrite' - 這將 slug 更改為“reviews”,這將有助於創建可用的永久鏈接結構。 (也可以是布爾值;查看文檔以獲取更多信息。)
  • 'supports' - 定義啟用了哪些原生 WordPress 編輯/發布功能的數組。 這個非常靈活,有更多的選擇,但我們至少需要custom-fieldseditor來完成這篇文章。

接下來調用register_post_type()函數,它使用我們剛剛定義的參數數組創建一個名為評論的新帖子類型。

最後,我們必須調用最後一個函數來完成該過程。 register_post_type()應始終由操作“init”初始化。 我們可以通過調用將我們的新函數掛鉤到 init

add_action(‘init’, ‘create_new_post_type’);

驚人的! 現在,如果我們登錄 WordPress 管理面板,我們應該會在左側看到一個名為“評論”的新選項卡。

咖啡評論

2.現在我們將評論設置為自定義帖子類型,我們需要更新永久鏈接結構,以便我們的讀者可以輕鬆找到我們的帖子。 此外,它使我們的 URL 更易於閱讀和 SEO 友好。

3.在 Settings -> Permalinks 菜單欄下,您會發現一些用於永久鏈接結構的常用選項。 我們將更改自定義設置以匹配字段/%category%/%postname%/

這意味著 WordPress 將生成與我們帖子的類別和標題相匹配的 URL。

注意:這是一個站點範圍的更改,將影響您在其他類別中的帖子。

custom_permalink

現在讓我們看一下我們的評論者為 Sumatra Ketiara 咖啡寫的帖子的 URL:

蘇門答臘永久鏈接

極好的! 看看那個網址。 我們將評論分開到他們自己的目錄中,並且 URL 是用簡單的英語編寫的。 現在我們的讀者確切地知道當他們點擊一個鏈接時會得到什麼。

自定義字段

儘管我們的評論者喜歡新的評論部分,但他們確實要求我們在後端加入一些東西,以便他們輸入他們寫的關於每種咖啡的常見信息,例如原產國和品嚐說明。 這聽起來像是自定義字段的完美使用,幸運的是,它很容易實現。

1.在個人評論編輯器上,您會在編輯器右上角看到屏幕選項按鈕:

screen_options

單擊時擴展為:

screen_options_dropdown

2.選中自定義字段框。

在編輯器下方,您將看到我們剛剛啟用的自定義字段框。

custom_fields_blank

3.你可以在兩個框中輸入任何內容; 您在名稱字段中鍵入和添加的任何內容都將被保存以供以後使用。 在這裡,我們列出了我們的咖啡來自的地區和國家。

custom_fields_region

自定義字段可以非常容易地在單獨的位置對每個帖子中的某個類別重要的數據進行標準化。 現在我們只需要將這些信息顯示在我們的評論中。

4.我們將把這個代碼標籤添加到我們的一個主題文檔中:

<br /><?php the_meta(); ?><br />

注意:在這個例子中,我們將把這個標籤放在我們的 content.php 文件中,但是你需要為你的值表找到一個合適的位置。 您還應該設置此標籤的樣式以匹配主題的其餘部分,您可以在此處閱讀更多信息。

回到我們的博客,我們可以看到我們的標籤已經在我們的評論中插入了一個列表。

custom_field_example

時髦! 現在我們的讀者和審稿人都很高興。 我們能夠構建一個自定義帖子類型,使我們能夠保存關於咖啡的評論,並且我們能夠為我們的評​​論者提供一個地方來存儲他們對於每條不同評論的所有重要信息。