如何使用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取得自訂欄位參數:
1 2 3 4 5 |
<span style="background-color: #dcdcdc;"><code><?php if(get_post_meta(get_the_ID(), 'home', true) == 'on') : ?> <?php the_title() ?> <?php endif; ?></code></span> |
1 |
很抱歉,此文章關閉留言