Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
內容目錄
如果你的網站會針對特定議題評分(譬如寫影評、評比外掛等),又或者是希望針對不同類型的內容,提供客製化的欄位(如價格、地址等),ACF 就是大幅降低你新增自訂欄位技術門檻的好幫手。
ACF 除了在 WordPress.org 上提供免費版以外,在官方網站上也提供了 ACF Pro 的付費版本。如果說是接案者或是想要開發複數網站,建議可以購買開發人員版本。
關於如何使用 ACF,其實坊間已經有很多文章和影片可以輔助,這邊提供台中小聚王大分享的內容做參考。以下省略「建立欄位」的過程,純粹筆記一些 ACF 常用、必備的語法。以下語法範例全部引用自 ACF 官方開發文件。
<?php
/**
* string $selector, int $post_id, bool $format_value
* $format_value 為 false 時,會直接回傳資料庫內儲存的原始值
*/
get_field($selector, [$post_id], [$format_value]);
the_field($selector, [$post_id], [$format_value]);
ACF 最基本的寫法,相當於 WordPress 內建的 get_post_meta() 功能,但是使用 get_field() 的方式,會由 ACF 協助格式化,在取用圖片、圖庫等,常以陣列 (array) 形式出現的資料來說,會十分有用。
<?php
/**
* have_rows( $selector, [$post_id] );
*/
if( have_rows('parent_field') ):
while ( have_rows('parent_field') ) : the_row();
$sub_value = get_sub_field('sub_field');
// Do something...
endwhile;
else :
// no rows found
endif;
have_rows() 除了 Repeater 欄位之外,圖庫 (Gallery) 以及 Flexible Content 的內容都能夠以 have_rows() 搭配 get_sub_field() 的方式取得個別內容。
這裡需要注意寫法,之前因為沒有好好遵守 while ( have_rows( ‘parent_field’) ) : the_row(); 這個寫法,而使用 foreach 的方式,這時候會用陣列而非物件的方式取得儲存列的資料,導致 get_sub_field() 這個方法無法使用。
上述是兩種基本 ACF 取得資料的方式。這兩組語法基本上涵蓋了 90% 的 ACF 使用情境。剩下的 10%,通常就會需要搭配勾點去進行。
[…] Day 5 Advanced Custom Fields (上) 主要討論的是 ACF […]
[…] ACF Pro […]