【ACF】値・キーを取得して表示する方法と、値を更新する方法|Advanced Custom Fields

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

今回は、そのACFで、カスタムフィールドを扱う際によく利用する関数となります。

get_field関数

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

値を取得

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

<?php
// カスタムフィールドの値を取得
$value = get_field( 'sample_field' );
if( $value ) {
    echo $value;
}
?>

get_field関数のパラメータ

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

get_field( $selector, $post_id, $format_value );
$selector(必須)
取得したいカスタムフィールドのキー(フィールド名)を指定。
$post_id(省略可)
投稿IDの指定が可能。省略した場合は現在の投稿。
$format_value(省略可)
値を取得する際にフォーマットを適用するかを指定。
trueの場合はカスタムフィールドを設定した際のフォーマットが適用され、falseの場合はデータベースそのままの値となります。省略した場合は true。

フィールドタイプ「画像」の値を取得する場合

Aフィールドタイプが「画像」のカスタムフィールドを利用した場合に、その値を取得して出力する方法については、以下のリンク先を参考にしてみてください。

get_fields関数

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

複数のカスタムフィールドの情報を扱う場合には、get_fields関数で取得することにより効率的にカスタムフィールドの情報を扱えます。

キー・値をすべて取得

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

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

キーが_(アンダースコア)で始まるカスタムフィールドについて

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

カスタムフィールドには、_(アンダースコア)から始まるキーもあるのですが、そのカスタムフィールドはWordPressの管理画面では表示されません。

_(アンダースコア)から始まるキーは、デフォルトで設定されているものや、カスタムフィールドを追加する関数などで作成できます。

キーを指定して値を取得

以下の例では、現在の投稿にカスタムフィールドのキー「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関数のパラメータとなります。

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

update_field関数

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

値を更新

以下の例は、現在の投稿に設定されているカスタムフィールドの中で、キー「key_01」の値を 「Steve」に更新します。

<?php update_field( 'key_01', 'Steve' ); ?>

update_field関数のパラメータ

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

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

ACFのその他の関数について

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

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

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

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

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

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。