【Advanced Custom Fields(ACF)】値・キーを取得して表示/値の更新など

WordPressのプラグイン『Advanced Custom Fields』は、カスタムフィールドの管理をカスタマイズできる便利なプラグインです。

今回は、その『Advanced Custom Fields』でカスタムフィールドを管理している際に利用できる関数のまとめです。

get_field()

get_field関数は、パラメータで指定したカスタムフィールドの値を取得します。

以下はソースコードの例となり、カスタムフィールドの値を出力したい箇所に記述します。

「キー名」を指定して「値」を取得

以下の例では、現在の投稿にカスタムフィールドのキー名「sample_field」の値があれば、その値を出力します。

<?php
$value = get_field( 'sample_field' );
if( $value ) {
    echo $value;
}
?>

パラメータについて

以下は、get_field関数のパラメータとなります。

get_field( $selector, $post_id, $format_value );
$selector(必須)
取得したいカスタムフィールドのキー名(フィールド名)を指定。
$post_id(省略可)
投稿IDの指定が可能。省略した場合は現在の投稿。
$format_value(省略可)
trueの場合はカスタムフィールドのフォーマットが適用。省略した場合は true

get_fields()

get_fields関数は、指定したページのカスタムフィールドのキー名・値を配列ですべて取得します。

複数のカスタムフィールドの情報を扱う場合には、get_fields関数で取得することにより、データベースにアクセスする回数が少なくなり、効率的にカスタムフィールドの情報を扱えます。

また、キー名が_(アンダースコア)で始まるカスタムフィールドは取得されません。

※カスタムフィールドには、_(アンダースコア)から始まるキー名もあるのですが、そのカスタムフィールドはWordPressの管理画面では表示されません。_(アンダースコア)から始まるキー名は、デフォルトで設定されているものや、カスタムフィールドを追加する関数などで作成できます。

以下はソースコードの例となり、カスタムフィールドの情報を出力したい箇所に記述します。

「キー名」と「値」をすべて取得

以下の例では、現在の投稿にカスタムフィールドの情報があれば、すべてのキー名と値を出力します。

<?php
// カスタムフィールドの「キー名(フィールド名)」と「値」を配列で取得
$fields = get_fields();
// foreachループですべての「キー名(フィールド名)」と「値」を出力
if ( $fields ) {
    echo "<ul>";
    foreach ( $fields as $key => $value ) {
    	echo "<li>" . $key . "は" . $value . "</li>";
    }
	echo "</ul>";
}
?>

「キー名」を指定し「値」を取得

以下の例では、現在の投稿にカスタムフィールドのキー名「sample_field02」の値があれば、その値を出力します。

<?php
// カスタムフィールドの「キー名(フィールド名)」と「値」を配列で取得
$fields = get_fields();
// 「キー名」を指定して「値」を出力
$value = $fields['sample_field02'];
if ( $value ) {
	echo "<p>" . $value ."</p>" ;
}
?>

「値」を指定して「キー名」を取得

以下の例では、現在の投稿にカスタムフィールドの値「サンプル02」があれば、そのキー名を出力します。また、同じカスタムフィールドの値が複数あった場合には、最初の値のキー名を出力します。

<?php
// カスタムフィールドの「キー名(フィールド名)」と「値」を配列で取得
$fields = get_fields();
// array_keys関数で「値」を指定して「キー名」を出力
$key = array_keys( $fields, 'サンプル02' );
if ( $key[0] ) {
	$key = array_keys( $fields, 'サンプル02' );
	echo "<p>" . $key[0] . "</p>";
}
?>

パラメータについて

以下は、get_fields関数のパラメータとなります。

get_fields( $post_id );
$post_id(省略可)
投稿IDの指定が可能。省略した場合は現在の投稿。

update_field()|値を更新

update_field関数は、パラメータで指定したカスタムフィールドの値を更新します。

パラメータについて

以下は、update_field関数のパラメータとなります。

update_field( $selector, $value, $post_id );
$selector(必須)
取得したいカスタムフィールドのキー名(フィールド名)を指定。
$value(必須)
更新するカスタムフィールドの新しい値を指定。
$post_id(省略可)
投稿IDの指定が可能。省略した場合は現在の投稿。

その他にもプラグイン『Advanced Custom Fields』で利用できる関数はあります。他の関数については以下の参考サイトを確認してみてください。

セキュリティ対策として出力をエスケープ処理

また、今回の例では行っていませんが、セキュリティ対策としてカスタムフィールドのデータを出力する際に、データによってはエスケープ処理を行います。

エスケープ処理については、以下のリンク先を参考にしてみてください。

データ検証 - WordPress Codex 日本語版

参考サイト、参考書籍

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はコチラから。