【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で利用できる関数はあります。他の関数については文末の参考サイトを確認してみてください。
セキュリティ対策として出力をエスケープ処理
また、今回の例では行っていませんが、カスタムフィールドのデータを出力する際に、データによってはセキュリティ対策としてエスケープ処理を行います。
エスケープ処理については、以下のリンク先を参考にしてみてください。