如何使用WP自訂欄位

在上一篇 免用外掛自製SEO自訂欄位 只介紹如何使用SEO自訂欄位,並沒有告知說自訂欄位產生的原理,在這篇將主要針對自定義欄位作為主題。(本篇部份內容以樂在設計的文章自訂文章欄位作為參考)

自定義欄位是個十分好用的功能,有許多外掛都會利用到自定義欄位,此篇我們不使用外掛而是直接使用php的函數呼叫自定義欄位。那究竟自定義欄位可以用在什麼地方呢?像是本站的右側欄最新文章的圖片和上一篇提到的自定義SEO描述…..等地方都可以使用自定義欄位,可以減少很多不必要的重複動作。

使用自訂欄位一般分成 直接使用新增文章的自訂欄位 和 使用語法建立一個自訂欄位UI ,兩種方法基本上功能都是一樣的,但只是第二種看起來比較美觀,適合用來替他人客製化時使用,像之前Aidec都只使用第一種方法,看起來就醜醜的。

參考圖:

第一種

第二種

當然建立像第二種這種必須在佈景主題的funcion.php添加一大串語法(此部份參考於樂在設計 的文章 ),今天主要介紹這兩種方法給大家參考,看看哪種比較適合您。

第一種(較醜較陽春型)

這一種需要每次在發文時的下方自訂欄位的地方,選擇自訂欄位名稱和輸入欄位內容,再使用

get_post_meta(文章ID值(數字),自訂欄位ID(字串),單一欄位(布林) ) 來取得自訂欄位的資料

實際範例如下:

<?php echo get_post_meta(get_the_ID(), ‘Aidec-description’, true) ?>

其中 get_the_ID()是Wp的內建函數,可以抓取該文章的ID,也可以在該欄位輸入指定的文章ID。

‘Aidec-description’是自訂欄位的ID,用來辨識要取得哪一項自訂欄位的資料。

註:請自行將’改成單引號。

true這個是設定是否只取得單一欄位值,若沒有填寫的話,將會回傳數組自訂欄位,在需要回傳多組自訂欄位時,就把true拿掉。

官方範例:http://codex.wordpress.org/Function_Reference/get_post_meta


 

添加新的自訂欄位

在第一次添加自訂欄位時,由輸入新欄位添加,以後可從選擇框中選擇自訂欄位(圖1位置),在(圖2)的地方輸入自訂欄未的內容,例如:SEO描述,接著在點選[新增自訂欄位](圖3)。

 

第二種(美觀實用型)

這一種看起來就高級多了,但是相對的也比較複雜(只有第一次),所以只要熬過一次以後就輕鬆了^^

原代碼可從此處取得:自訂欄位function
首先說明這段:

註:std參數為:欄位資料的預設參數值。


 

接下來,這一串是煎熬….(沒興趣研究的人,可以直接將它複製貼上也可以產生一個自訂欄位UI)

沒說明到的部分,是用來建立功能的php的語法,在這邊就不詳細說明了。

將此串輸入在function.php 的 <?php ……… ?>內,之後在與第一種方法相同,在欲使用自定欄位的地方添加

get_post_meta(文章ID值(數字),自訂欄位ID(字串),單一欄位(布林) )

便能取得自訂欄位值。


 

這兩種都有他的特點,有時若只是想簡單的呼叫自訂欄位使用第一種應該比較快,若長期要使用的話,還是建議使用第二種以免太多自訂欄位代碼搞昏了頭。

自訂欄位究竟可以用來做甚麼?例如:
1.在某區域新增標語。
2.建立SEO描述。

3.建立文章計數器。

4.一些狀態值。

剩下的就看您自己的創意了,看看能用自定欄位做出甚麼新創意!!

最後註明一點自訂欄位不只有文字框,還能建立核選框、選擇框…。


補充說明:

型態用法:

(一)Text範例:

array(
‘name’ => ‘Text box’,  //欄位標題
‘desc’ => ‘Enter something here’,  //欄位說明
‘id’ => $prefix . ‘text’,
‘type’ => ‘text’,
‘std’ => ‘Default value 1’
)

註:請自行將 ‘ 符號,轉換成單引號。


Text取得自訂欄位參數:

<?php echo get_post_meta(get_the_ID(), ‘自訂ID’, true) ?>


(二)Textarea範例:

array(
‘name’ => ‘Textarea’, //欄位標題
‘desc’ => ‘Enter big text here’,  //欄位說明
‘id’ => $prefix . ‘textarea’, //自訂ID
‘type’ => ‘textarea’,   //型態
‘std’ => ‘Default value 2’  //預設值
)

註:請自行將 ‘ 符號,轉換成單引號。


Textarea取得自訂欄位參數:

<?php echo get_post_meta(get_the_ID(), ‘自訂ID’, true) ?>


(三)Select box範例:

array(
‘name’ => ‘Select box’,      //欄位標題
‘id’ => $prefix . ‘select’,   //自訂ID
‘type’ => ‘select’,               //型態
‘options’ => array(‘Option 1’, ‘Option 2’, ‘Option 3’)  //參數值
)

註:請自行將 ‘ 符號,轉換成單引號。


Select box取得自訂欄位參數:

<?php echo get_post_meta(get_the_ID(), ‘自訂ID’, true) ?>


(四)Radio範例:

array(
‘name’ => ‘Radio’,          //欄位標題
‘id’ => $prefix . ‘radio’,    //自訂ID
‘type’ => ‘radio’,    //型態
‘options’ => array(
array(‘name’ => ‘Name 1’, ‘value’ => ‘Value 1’),     //選項1名稱、參數值
array(‘name’ => ‘Name 2’, ‘value’ => ‘Value 2’)     //選項2名稱、參數值
)
)

註:請自行將 ‘ 符號,轉換成單引號。


Radiobox取得自訂欄位參數:

<?php switch (get_post_meta(get_the_ID(), ‘自訂ID’, true)) {

case “‘Value 1”:
echo ”Value is 1′;
break;
case “Value 2”:
echo ‘Value is 2’;
break;

default:
echo “艾德克工作室”;
}
?>


(五)Checkbox範例:

array(
‘name’ => ‘Checkbox’, //欄位標題
‘id’ => $prefix . ‘checkbox’,     //自訂ID
‘type’ => ‘checkbox’  //型態
)

註:請自行將 ‘ 符號,轉換成單引號。


Checkbox取得自訂欄位參數:


感謝您的閱讀,請用力地分享讓大家知道吧~~

Aidec Li
學我所見,寫我所學。凡事略懂略懂~~
更多 Aidec Li 的文章...

很抱歉,此文章關閉留言