エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Advanced Custom Fieldsの関数の全部の使い方を調べてみた

      2017/03/07

Advanced Custom Fieldsの関数の全部

 

Advanced Custom Fieldsには多彩な関数が用意されている

 
Advanced Custom Fieldsには、登録したカスタムフィールドや投稿画面から入力した情報を取得し、テンプレートなどに編集するための関数が用意されています。
 
一番よく使うのは「get_field()」関数で、投稿画面から入力された値を取得する際に使用します。
また、値を取得するだけではなくそのまま出力まで実行してくれる「the_field()」関数や、フィールド単位ではなく投稿全体の全てのカスタムフィールドの値を取得してきてくれる「get_fields()」関数なども用意されています。
 
Advanced Custom Fieldsは便利で高機能なプラグインですので、全部の機能を使いこなすのは難しいですが、まずはどんなことができるのか、それを確認する上でも用意されている関数の使い方を調べてみましたのでご紹介します。
 
 

Advanced Custom Fieldsの関数の全部・目次

 
  get_field()
  get_fields()
  get_field_object()
  get_field_objects()
  get_sub_field()
  get_sub_field_object()
  get_row_layout()
  have_rows()
  has_sub_field()
  the_field()
  the_sub_field()
  the_repeater_field()
  the_flexible_field()
  Shortcode()
  update_field()
  update_sub_field()
  acf_set_options_page_menu()
  acf_set_options_page_title()
  acf_set_options_page_capability()
  acf_add_options_page()
  acf_add_options_sub_page()
  acf_form()
  acf_settings()
 
 

Advanced Custom Fieldsの関連記事・目次

 
Advanced Custom Fields管理画面の全項目完全解説・カスタムフィールド決定版!
Advanced Custom Fieldsの全項目解説・公開側表示編集編
WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法
Advanced Custom Fieldsの関数の全部の使い方を調べてみた
Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説
Advanced Custom Fields(ACF)のアドオン・繰り返しフィールドの使い方解説
WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?
Advanced Custom Fieldsのカスタムフィールドの登録上限が max_input_varsに影響する問題の対処方法
Advanced custom Fieldsのフィールドグループを簡単に複製する方法
Advanced custom Fieldsの条件判定活用方法・フィールドグループ複製より便利
 
 


 

Advanced Custom Fieldsの関数の全部の解説

 
 

get_field()

Advanced Custom Fieldsで登録した入力フィールドの値を編集として取得する際に使用する関数です。
取得できる値は、入力フィールドの条件によって、変数、配列、オブジェクトなど様々です。
「the_field()」は、「echo get_field ( $field_name );」と同じ機能です。
 

 
$field_name
取得する入力フィールドの「フィールド名」を指定します。必須項目です。
 
$post_id
取得する POST IDを指定します。必須項目ではなく、省略をすると現在表示中のページの POST IDが編集されたものとして処理されます。
投稿 IDだけではなく、オプション、タクソノミー、ユーザなども登録できます。
 
$format_value
取得した値をフォーマット対応するか、否かを設定します。trueか falseが設定でき、省略した場合は trueになります。
フィールドタイプが「テキストエリア」などで wpautop()や nl2br()などでフォーマットするかどうかを指定する項目で、trueの場合はフォーマットが適用されます。
 

 
この関数は下記の記事でも紹介しています。
Advanced Custom Fieldsの全項目解説・公開側表示編集編 ・Advanced Custom Fieldsの入力値を取得する関数
WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法
 
 
ちなみに、第 3引数に falseを指定すると結果が変化します。
 

 
上記のように画像のオブジェクトを取得できる場合でも「false」を設定することで画像 IDだけを取得することができます。
詳細は「Advanced Custom Fieldsの全項目解説・公開側表示編集編/フィールドタイプ・画像」を参照してみてください。
 
また、フィールドタイプがテキストエリア、WYSIWYGなどの自動処理がある項目に対しては、その自動編集処理を無効にすることもできます。
Advanced Custom Fieldsの全項目解説・公開側表示編集編/フィールドタイプ・テキストエリア」を参照してみてください。
 
なお、第 3項目を指定したいけど、第 2項目は現在の PostIDを指定したくて空にしたままにしておきたい、という場合は、第 2項目は「false」を指定してください。
(「””」や「null」でも動くようではありますが、マニュアル上は「false」を指定するように、と書いてありますね。)
 
 
 

get_fields()

投稿画面から入力されたカスタムフィールドの値(valueの値)の全てを取得する関数です(ただし、「_」(アンダースコア)で始まるカスタムフィールドは除く)。
 
「get_field()」関数は、カスタムフィールドのフィールド名を指定して値を取得する関数でしたが、「get_fields()」関数は、全てのカスタムフィールドの値を一括して取得できます。
フィールドごとに一つ一つ取得するのが面倒なほどに項目が多い場合などは、「get_fields()」関数を使ってすべての値を取得した上で、各項目に編集していくという方法もいいのではないでしょうか。
 

 
$post_id
「get_field()」関数と同じです。
取得する POST IDを指定します。必須項目ではなく、省略をすると現在表示中のページの POST IDが編集されたものとして処理されます。
投稿 IDだけではなく、オプション、タクソノミー、ユーザなども登録できます。
 
 
 

get_field_object()

フィールドグループで登録した情報も含めてカスタムフィールドの値を取得できます。
 
例えば「Advanced Custom Fieldsの全項目解説・公開側表示編集編/フィールドタイプ・セレクトボックス」でも掲載していますが、セレクトボックスの値を取得すると下記の様な値が取得できます。
 

 
フィールドタイプ「テキスト」などではほとんど必要となる場面はありませんが、「選択肢」タイプで、「キー」と「値」が違う場合にはこの関数が必要となります。
また、Google Mapなどでデフォルトの地図の Zoomなどを取得したい場合にも利用できます。
 

 
$field_key
get_field()関数と同じく取得するカスタムフィールドの「フィールド名(name)」を編集するか、「key」を編集します。必須項目です。
 
$post_id
「get_field()」関数と同じように、取得する POST IDを指定します。必須項目ではありません。
 
$options
オプションを配列で設定します。
例えば、「array ( load_value => false )」などです。「load_value」のデフォルトは「true」です。
 
 

 
 
使い方に関しては「Advanced Custom Fieldsの全項目解説・公開側表示編集編/Advanced Custom Fieldsの入力値を取得する関数」にも記載をしています。
 
ちなみに、オフィシャルサイトには「$field_key」を指定する際、「key」と「name」のどちらを設定する方がいいのかの説明が書かれていますが、英語のマニュアルを読んでもイマイチ正確な意味が取れないため、ここに記載するのは止めにしました。
 
「name」より「key」を指定する方がよさそうだという雰囲気は分かりますが...
 
 
 

get_field_objects()

 
投稿画面から入力されたカスタムフィールドの値(valueの値)だけでなく、カスタムフィールドとして設定されている値も含めて全てを取得する関数です(ただし、「_」(アンダースコア)で始まるカスタムフィールドは除く)。
 
「get_field_object()」の全項目版が「get_field_objects()」です。
「get_field()」の全項目版が「get_fields()」であるのと同じ理解で OKです。
 

 
$post_id
「get_field()」関数と同じように、取得する POST IDを指定します。必須項目ではありません。
 
 
 

get_sub_field()

 
有料アドオンの「repeater field(繰り返しフィールド)」と「flexible content field(柔軟コンテンツフィールド)」で使われるサブフィールドの値を取得するために使用します。
これらのサブフィールドをループさせることで現在の行からサブフィールドの値を取得することができます。
 

 
$sub_field_name
サブフィールドの名称を指定します。必須項目です。
 
 
 

get_sub_field_object()

 
「has_sub_field()」関数のループ内で取得されるサブフィールドのオブジェクトを取得する関数です。
 
「get_sub_field()」と「get_sub_field_object()」の関係は、「get_field()」と「get_field_object()」の関係と同じ感じです。
 

 
$field_key
「get_field()」関数と同じく取得するカスタムフィールドの「フィールド名(name)」を編集するか、「key」を編集します。必須項目です。
 
 
 

get_row_layout()

 
「the_flexible_field()」関数のループ内の現在のレイアウト(文字列)を返します。
「flexible content field」は、任意の順序でページ上に配置することができ、様々なレイアウトオプションを持つことができます。
 
この関数は引数を持ちません。
 
 
 

have_rows()

「have_rows()」関数は、「repeater field」や「flexible content field」が値を持っているか否かを判定します。
trueか falseを返す Boolean関数です。
 
この関数は「has_sub_fields()」関数の置き換えです。しかし、いくつか違いがあります。
その違いは、この関数では実行されないので、「the_row()」関数を使用する必要がある行で実行することです。
 
「have_rows()」関数と「the_rows()」関数の使用は、「have_posts()」関数と「the_posts()」関数の関係に合わせる意図を持っています。
 
※この関数は Ver.4.3.0で追加されました。
 
 
 

has_sub_field()

「has_sub_field()」関数は、「repeater field」や「flexible content field」の「while」ループ処理内で使用され、「get_sub_field()」「the_sub_field()」で利用する値を提供します。
 
※この関数は、「the_repeater_field()」関数と「the_flexible_field()」関数の代替品として、Ver.3.3.4で追加されされました。
 

 
$field_name
「repeater field」や「flexible content field」のループさせるフィールド名を指定します。必須項目です。
 
$post_id
「get_field()」関数と同じように、取得する POST IDを指定します。必須項目ではありません。
 
 
 

the_field()

Advanced Custom Fieldsで登録した入力フィールドの値を取得し、出力まで行う関数です。「echo get_field ( $field_name );」と同じ機能です。
 

 
$field_name
取得する入力フィールドの「フィールド名」を指定します。必須項目です。
 
$post_id
取得する POST IDを指定します。必須項目ではなく、省略をすると現在表示中のページの POST IDが編集されたものとして処理されます。
投稿 IDだけではなく、オプション、タクソノミー、ユーザなども登録できます。
 

 
この関数は下記の記事でも紹介しています。
Advanced Custom Fieldsの全項目解説・公開側表示編集編 ・Advanced Custom Fieldsの入力値を取得する関数
WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法
 
 
 

the_sub_field()

有料アドオンの「repeater field(繰り返しフィールド)」と「flexible content field(柔軟コンテンツフィールド)」で使われるサブフィールドの値を取得し、編集するために使用します。
これらのサブフィールドをループさせることで現在の行からサブフィールドの値を取得することができます。
 
「echo get_sub_field();」と同じ機能です。
 

 
$sub_field_name
サブフィールドの名称を指定します。必須項目です。
 
 
有料アドオンについては「カスタムフィールド決定版!Advanced Custom Fields全項目完全解説・管理画面編/Advanced Custom FieldsのAdd-Ons」も参考にしてみてください。
 
 
 

the_repeater_field()

 
「the_repeater_field()」関数は、Ver.3.3.4以降の使用は推奨されていません。
「have_rows()」関数を使ってください。
 
 
 

the_flexible_field()

「the_flexible_field()」関数は、廃止されました。将来削除される可能性があるため、「has_sub_field()」関数に置き換えてください。
 
 


 
 

Shortcode

投稿の編集画面(Wysiwyg編集画面)で、カスタムフィールドとして保存されている値をショートコードを利用して編集することもできます。
 

 
ショートコードマーカーは、「the_field()」関数と同じ動作をします。
指定できる引数は以下の通りです。
 
field
フィールド名を指定します。
 
post_id
編集する POST IDを指定します。必須項目ではなく、指定しない場合は現在の投稿の値が編集されます。
 
ショートコードの使い方については「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」にも記事を書いていますので参考にしてください。
 
 
 

update_field()

フィールドの値を更新するために使用します。
 

 
$field_key
更新する値のフィールド名を指定します。指定は「name」か「key」で指定します。必須項目です。
 
$value
更新する値を編集します。必須項目です。
 
$post_id
「get_field()」関数と同じように、更新する POST IDを指定します。必須項目ではありません。
 

 
「update_field()」関数は、見た目の値が更新されるのではなく、データベースの値が更新されます。
 
 
 

update_sub_field()

サブフィールドの値を更新するために使用します。
「have_rows()」関数のループ内で使用される場合は、現在の行のサブフィールドの値を更新します。
「have_rows()」関数のルールの外で使用する場合は、行と親の位置を指定して値を更新します。
 

 
$selector
サブフィールド名、キー、または、行と親の位置を配列で指定します。必須項目です。
 
$value
更新する値を編集します。必須項目です。
 
$post_id
「get_field()」関数と同じように、更新する POST IDを指定します。必須項目ではありません。
 
 
 

acf_set_options_page_menu()

「acf_set_options_page_menu()」関数は、アドオンの「オプションページ」のメインオプションページメニュー項目を変更する際に組み合わせて使用する関数です。
この関数は、functions.php内で使用し、initアクションより前に実行する必要があります。
 
【警告】
更新プロセス中に、この機能は functions.phpファイルで使用することはできません。
Webサイトが壊されないようにするために、関数を実行する際には「function_exists()」関数で存在確認をする必要があります。
 

 
$menu_name
親のオプションページのメニュー項目の名前を指定します。必須項目です。
 

 
 
 

acf_set_options_page_title()

「acf_set_options_page_title()」関数は、アドオンの「オプションページ」のメインオプションページタイトルを変更する際に組み合わせて使用する関数です。
この関数は、functions.php内で使用し、initアクションより前に実行する必要があります。
 
警告の内容は「acf_set_options_page_menu()」関数と同じです。
 

 
$menu_name
親のオプションページのメニュー項目の名前を指定します。必須項目です。
 

 
 
 

acf_set_options_page_capability()

「acf_set_options_page_capability()」関数は、アドオンの「オプションページ」のメインオプションページタイトルの権限を変更する際に組み合わせて使用する関数です。
この関数は、functions.php内で使用し、initアクションより前に実行する必要があります。
 
「capability」はオプションページへのアクセスを許可するユーザの種類と権限を参照します。
「ユーザーの種類と権限」については下記を参照してください。
 http://wpdocs.osdn.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%A8%A9%E9%99%90
 
警告の内容は「acf_set_options_page_menu()」関数と同じです。
 

 
$capability
親のオプションページのメニュー機能の名前を指定します。必須項目です。デフォルトは「edit_posts」です。
 

 
 
 

acf_add_options_page()

 
この機能は、管理画面のサイドバーに新しいオプションページを追加します。
 
オプションページで保存された全てのデータはグローバル変数になります。
これは、任意の特定の投稿、固定ページに付随しないことを意味しますが、wp_optionsテーブルに保存されます。
 
この関数は Advanced Custom Fields Pro 5.0.0以上が必要です。
この機能は、admin_menuアクション(優先度 99)より前に使用する必要があります。
 

 
$page
ページタイトル、または、設定の配列を指定します。
空白の場合はデフォルト設定が使用されます。
 
 
オプションページは、有料アドオンです。
有料アドオンについては「カスタムフィールド決定版!Advanced Custom Fields全項目完全解説・管理画面編/Advanced Custom FieldsのAdd-Ons」も参考にしてみてください。
 
 
 

acf_add_options_sub_page()

 
この機能は、アドオンの管理メニューに新しいサブページを追加するオプションページと組み合わせて使用します。
この機能は、functions.phpファイル内で使用するには initアクションの前に実行する必要があります。
 
警告として、「acf_set_options_page_menu()」関数と同じく、関数を実行する際には「function_exists()」関数で存在確認をする必要があります、と書かれています。
 
また、オプションページアドオンの Ver.1.1.0以上が必要です。
 

 
$page
下記の 2つの指定の方法があります。必須項目です。
 サブページの名前(タイトル)を指定する方法
 タイトル(必須)+メニュー、Slug、Parent、Capabilityを配列で指定する方法
 
・タイトル:サブページのタイトル
・メニュー:サブページメニュー名。タイトルのデフォルト。
・Slug:ページのスラグの名前。デフォルトのサニタイズタイトル。
・Parent:親のスラグを指定。デフォルトはオプションページのメインメニューのスラグ。
・Capability:ページ参照に必要な機能を提供します。デフォルトはオプションページのメインメニューの機能です。
 
 
 

acf_form()

この関数は、バージョンによって使用方法が異なります。この記事の内容は Ver.5の内容です。
 
この関数は、投稿を追加、更新するためのフォームを作成します。
このフォームをカスタマイズするための多くの設定方法があり、以下に説明するように「$options」配列を追加することにより設定することが出来ます。
 

 
$options
以下のオプションを 1つ以上配列で指定します。
 

 
この「acf_form()」関数は、データを入力するための入力フォームを作成しますが、データを保存するために必要なロジックは含まれていないことに注意が必要です。
このロジックは「acf_form_head()」関数という別の関数で処理されます。
フォームのデータを保存できるようにするには、HTMLが表示される前のページのテンプレートの上部に「acf_form_head()」関数を配置しておく必要があります。
 
 
 

acf_settings

 
このフックを使用することで、プラグインを通じて Advanced Custom Fieldsによって使用されるグローバル設定の配列を上書きすることが出来ます。
 
この関数は、Ver.3.5.4以上で利用できます。
 

 
 
使用例

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説

カスタムタクソノミーを追加、管理するプラグインCustom Post Type UIの使い方の解説。プラグインの解説ではあるものの、カスタムタクソノミーの仕様の解説でもある。

WordPress投稿にPHPを記述するショートコードの使い方add_shortcode

WordPressの投稿ページで PHPの処理を行うには add_shortcode関数を使ったショートコードという機能を利用します。

Crayon Syntax Highlighterでソースコードをキレイに編集する設定方法

PHP、HTMLなどのソースコードを紹介する際に見やすく編集してくれる Crayon Syntax Highlighterの設定の方法、利用方法の解説です。

WordPressは危険?最新バージョンにアップデートして利用しよう

WordPress最新バージョン使ってますか?WordPressのバージョンアップをしないリスクを説明し、バージョンアップの手順、バックアップの重要性を解説しています。

WordPressで特定のURL、ページ、ファイル単位でBasic認証を設定する方法

WordPressはURLはmod_rewriteにより疑似的に作られていますが、特定のページ、特定のURL、ファイル単位でBasic認証を設定する方法を解説します。ツールも紹介。

BizVektor環境の引越しでメニュー、バナーが消える不具合の対応方法解説

BizVektor環境の引越し方法と不具合が発生しやすい箇所の解説です。引っ越し作業をする際にURLやファイルのパスを置換する際の手順解説と対応方法についての解説です。

評価点投票プラグイン10個を比較!WordPressで口コミサイトを構築

口コミサイトを作るために必要な評価点、レビューを投稿できるプラグインを探して評価。10プラグインをチェックし、8プラグインは詳細解説付き。

WordPressにプラグインを使わず OGP(Open Graph Protocol)の設定方法解説

WordPressに OGP(Open Graph Protocol)をプラグインを使わずに設定する方法の解説。

WP Multibyte PatchでWordPressの管理画面のイタリック体を解消

管理画面の一部の文字がイタリック(斜体)になっているのはプラグイン「WP Multibyte Patch」が有効になっていないためです。日本語を使うには必ず有効化しましょう。

WordPressのユーザ名を後から変更する方法。adminの使用は危険。

運用中のユーザ名を変更する方法を解説。かつてのデフォルト設定だった「admin」は誰もが使うIDのため非常に危険です。今からでも変更しましょう。