Advanced Custom Fieldsによるカスタムフィールドの出力 [基本編]

 2016.04.20  2017.09.20

Advanced Custom Fieldsの出力 基本編

WordPressでのサイト制作でもはや無くてはならないプラグイン「Advanced Custom Fields」(以下ACF)。 Wordpressのテンプレートタグや関数と同様、使わないとすぐ忘れてしまうので、ここでは出力に絞って使い方をまとめたいと思います。実際のお仕事では、カスタムフィールドの値をそのまま出力するだけではなく、カスタムフィールドの入力内容によって条件分岐をすることも多いので、条件分岐についても書いていきます。

ACFの出力に関する記事は以下のように3つに分けました。他にもフィールドはたくさんあるのですが、よく使うものだけまとめました。

このページでは、出力でよく使う2つの関数について説明します。この2つ以外にACFが用意している関数は、公式ページで確認できます。

フィールド内容を出力する

field_nameには「フィールド名」を入れます。

the_field()を使用する場合

<?php the_field('field_name'); ?>

get_field()を使用する場合

<?php
if(get_field('field_name’)) //フィールド内に値があれば表示
{
    echo get_field('field_name') ;
}
?>

変数を使用する場合

<?php
$field = get_field('field_name');
if($field){ //フィールド内に値があれば表示
      echo $field ;
}
?>

the_field()はフィールド内の値を簡単に表示したい時に、 get_field()は一度変数に格納して使用したい時や、フィールド内に値があるかどうかで分岐をしたい時などに使います。 get_field()を使用時にカスタムフィールドに値がない場合は、「false」が返ってきます。

フィールドタイプが「テキスト、テキストエリア、数値、メール、パスワード」などの場合は、上記の書き方でOK! オプションで ページIDなども指定できます。

エスケープ処理について

カスタムフィールドでは入力した情報がそのまま出力されるので、特にサイト制作者以外のユーザーが使用する場合は、セキュリティ上エスケープ処理をしておいた方がよいと思われます。

esc_html()
HTMLタグの<>&"’をエンティティ化して適切に処理。
esc_attr()
esc_html()と同じだが、altなどの属性にはこちらを使う。
esc_url()
URLで不適切な文字を削除・エンティティ化する。http://から始まる完全なURLに対してのみ使用可能。

WordPressのエスケープ処理については、以下のページを参考にさせていただきました。

Pocket