• Skip to primary navigation
  • Skip to main content

桓桓鄉寇

如果一開始沒有高牆,就沒有所謂的侵略了嗎?

  • 首頁
  • WordPress 筆記
  • 主機
  • 前端
  • 意見回饋
You are here: 首頁 / WordPress 筆記 / [WordPress 筆記] Day 5 Advanced Custom Fields (上)

[WordPress 筆記] Day 5 Advanced Custom Fields (上)

2019-10-14 by Eric Chuang 2 Comments

內容目錄

  • 為什麼要懂 ACF
  • 什麼是 ACF
  • 如何活用 ACF
    • 取得欄位資料
    • 取得 Repeater 內資料(僅限 Pro 版本)
  • 小結

為什麼要懂 ACF

如果你的網站會針對特定議題評分(譬如寫影評、評比外掛等),又或者是希望針對不同類型的內容,提供客製化的欄位(如價格、地址等),ACF 就是大幅降低你新增自訂欄位技術門檻的好幫手。

什麼是 ACF

Advanced Custom Fields

ACF 除了在 WordPress.org 上提供免費版以外,在官方網站上也提供了 ACF Pro 的付費版本。如果說是接案者或是想要開發複數網站,建議可以購買開發人員版本。

如何活用 ACF

關於如何使用 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) 形式出現的資料來說,會十分有用。

取得 Repeater 內資料(僅限 Pro 版本)

<?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%,通常就會需要搭配勾點去進行。

所屬分類: WordPress 筆記 標籤: acf, Advanced Custom Fields

關於 Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

讀者互動

Trackbacks

  1. [WordPress 筆記] Day 6 Advanced Custom Fields (下) | 桓桓 WordPress 修煉之路表示:
    2019-10-1623:52:28

    […] Day 5 Advanced Custom Fields (上) 主要討論的是 ACF […]

    回覆
  2. [WordPress 筆記] Day 7 客製化延伸閱讀功能-使用 Shortcode 短代碼 | 桓桓 WordPress 修煉之路表示:
    2020-03-1222:23:12

    […] ACF Pro […]

    回覆

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料。

Copyright © 2021 · Genesis Sample on Genesis Framework · WordPress