對於一個功能強大的主題,自定義欄位必不可少,前面提供的類檔案可供在文章、頁面以及各個自定義文章型別的編輯頁面新增自定義欄位。對於 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 檔案中可以看到,在輸出了父級、描述幾個預設項後有程式碼如下:

  1. if ( ! is_taxonomy_hierarchical($taxonomy) )   
  2.     do_action('add_tag_form_fields', $taxonomy);   
  3. do_action($taxonomy . '_add_form_fields', $taxonomy);  

我們主要就是透過 $taxonomy.'_add_form_fields'鉤子來輸出自定義欄位,$taxonomy 對應於需要新增欄位的分類法,比如往預設的分類法 category 頁面新增欄位應該使用鉤子:category_add_form_fields 。對於自定義分類法的介紹請參考本站前面的文章自定義分類法。 (在上面程式碼的後面還有一段程式碼是透過分別判斷分類法是否為 預設分類、標籤、連結分類然後執行對應鉤子) 。

嘗試:我們可以嘗試一下使用這個鉤子 (以預設的 twenty ten 主題為例),在 functions.php 檔案中新增程式碼:

  1. function ashu_add_cat_field(){   
  2.     echo '這裡是阿樹工作室的分類新增頁面,www.ashuwp.com';   
  3. }   
  4. add_action('category_add_form_fields','ashu_add_cat_field');  

然後檢視分類新增頁面效果:

然而我們點選編輯某個分類,在分類的編輯頁面是沒有輸出這句話的,這個我們前面已經介紹了。

、再看 edit-tag-form.php 檔案,找到輸出分類編輯頁面的程式碼,可以看到,在輸出預設項之後有程式碼如下:

  1. <?php   
  2.         // Back compat hooks   
  3.         if ( 'category' == $taxonomy )   
  4.             do_action('edit_category_form_fields', $tag);   
  5.         elseif ( 'link_category' == $taxonomy )   
  6.             do_action('edit_link_category_form_fields', $tag);   
  7.         else  
  8.             do_action('edit_tag_form_fields', $tag);   
  9.   
  10.         do_action($taxonomy . '_edit_form_fields', $tag$taxonomy);   
  11.         ?>  

類似的我們可以使用 $taxonomy . '_edit_form_fields'函式來輸出程式碼。不過需要注意的是:分類的新增頁面是<div> 佈局,而分類的編輯頁面是<table> 佈局,重點是編輯頁面的 table 佈局,得輸出表格的程式碼。

嘗試二:在 functions.php 檔案中再新增程式碼,

  1. function ashu_edit_cat_field(){   
  2.     echo '<tr><th> 分類編輯頁面</th><td> 這裡是阿樹工作室的分類的編輯頁面,www.ashuwp.com</td></tr>';   
  3. }   
  4. add_action('category_edit_form_fields','ashu_edit_cat_field');  

此時檢視點選一個分類的編輯頁面:

至此我們成功往分類的新增、編輯頁面輸出了內容,我們可以把輸出內容改成需要輸出的自定義表單項即可。

 

預告:

接下來將講述輸出表單項,以及資料的儲存、更新。