對於一個功能強大的主題,自定義欄位必不可少,前面提供的類檔案可供在文章、頁面以及各個自定義文章型別的編輯頁面新增自定義欄位。對於 wp 來說,核心基本就兩個內容:文章、分類法。所以對於分類法,我們也需要用到自定義欄位。
應用:分類的關鍵次、描述、 title 、封面圖片。等等其它一些特殊表單。如圖:

分析:1 、要給分類新增欄位,首先面臨一個問題就是資料的儲存,在 WordPress 的資料表中,對於 post 等有專門的 post_meta 表來儲存欄位資訊,但是分類沒有,所以有兩種選擇:一、儲存在_options 表中;二、新建一個資料表。具體使用哪種方法呢?如果分類比較少,欄位比較少儲存在_options 表中就可以了,如果分類數量多,新增的欄位多,那麼建議新建一個資料表來儲存分類的欄位資訊。在後面的教程中,這兩種辦法都將會講到。
2 、對於分類,有兩個頁面需要新增欄位的表單,一、建立分類;二、編輯分類;所以儲存資料也應該有兩個部分,一、新建分類;二、重新編輯分類。
函式介紹:
一、給分類新增欄位的有關函式資料位於:wp-admin/edit-tags.php 檔案和 wp-admin/edit-tag-form.php 檔案中:在 wp-admin/edit-tags.php 檔案中可以看到,在輸出了父級、描述幾個預設項後有程式碼如下:
- if ( ! is_taxonomy_hierarchical($taxonomy) )
- do_action('add_tag_form_fields', $taxonomy);
- do_action($taxonomy . '_add_form_fields', $taxonomy);
我們主要就是透過 $taxonomy.'_add_form_fields'鉤子來輸出自定義欄位,$taxonomy 對應於需要新增欄位的分類法,比如往預設的分類法 category 頁面新增欄位應該使用鉤子:category_add_form_fields 。對於自定義分類法的介紹請參考本站前面的文章自定義分類法。 (在上面程式碼的後面還有一段程式碼是透過分別判斷分類法是否為 預設分類、標籤、連結分類然後執行對應鉤子) 。
嘗試:我們可以嘗試一下使用這個鉤子 (以預設的 twenty ten 主題為例),在 functions.php 檔案中新增程式碼:
- function ashu_add_cat_field(){
- echo '這裡是阿樹工作室的分類新增頁面,www.ashuwp.com';
- }
- add_action('category_add_form_fields','ashu_add_cat_field');
然後檢視分類新增頁面效果:

然而我們點選編輯某個分類,在分類的編輯頁面是沒有輸出這句話的,這個我們前面已經介紹了。
二、再看 edit-tag-form.php 檔案,找到輸出分類編輯頁面的程式碼,可以看到,在輸出預設項之後有程式碼如下:
- <?php
- // Back compat hooks
- if ( 'category' == $taxonomy )
- do_action('edit_category_form_fields', $tag);
- elseif ( 'link_category' == $taxonomy )
- do_action('edit_link_category_form_fields', $tag);
- else
- do_action('edit_tag_form_fields', $tag);
- do_action($taxonomy . '_edit_form_fields', $tag, $taxonomy);
- ?>
類似的我們可以使用 $taxonomy . '_edit_form_fields'函式來輸出程式碼。不過需要注意的是:分類的新增頁面是<div> 佈局,而分類的編輯頁面是<table> 佈局,重點是編輯頁面的 table 佈局,得輸出表格的程式碼。
嘗試二:在 functions.php 檔案中再新增程式碼,
- function ashu_edit_cat_field(){
- echo '<tr><th> 分類編輯頁面</th><td> 這裡是阿樹工作室的分類的編輯頁面,www.ashuwp.com</td></tr>';
- }
- add_action('category_edit_form_fields','ashu_edit_cat_field');
此時檢視點選一個分類的編輯頁面:

至此我們成功往分類的新增、編輯頁面輸出了內容,我們可以把輸出內容改成需要輸出的自定義表單項即可。
預告:
接下來將講述輸出表單項,以及資料的儲存、更新。