對於一個功能強大的主題,自定義字段必不可少,前面提供的類文件可供在文章、頁面以及各個自定義文章類型的編輯頁面添加自定義字段。對於 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');
此時查看點擊一個分類的編輯頁面:

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