【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の場合はカスタムフィールドを設定した際のフォーマットが適用され、falseの場合はデータベースそのままの値となります。省略した場合は true。

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( $post_id );
$post_id(省略可)
投稿IDの指定が可能。省略した場合は現在の投稿。

update_field()

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

「値」を更新

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

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

パラメータについて

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

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

その他の関数について

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

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

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

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

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

参考サイトなど

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

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

また、コメントは承認制となります。