WordPressのテーマ製作をしていると、カスタムフィールドをうまく取り入れてクライアントが更新しやすいようにカスタマイズしたいなぁと思うことが多々あります。

今回は、筆者もよくお世話になっている「Custom Field Suite」というプラグインの使い方を書き留めておこうと思います。

基本情報

WEBサイト:Custom Field Suite

インストール:「プラグイン」メニューから「Custom Field Suite」で検索してインストール・有効化します。

ドキュメント:Documentation | Custom Field Suite

フリーのプラグインなのですが、ループフィールドに対応しているのがとても便利!

フィールドグループ作成

メニューに追加された「フィールドグループ」から、新規作成でカスタムフィールドセットを作ります。
特定のテンプレートや、カスタム投稿タイプに紐づけてその条件に一致する時だけ表示させることができます。

テンプレートでの基本の表示方法

WordPressのデフォルトカスタムフィールドの表示方法でも表示させることができますが、このプラグイン専用のメソッドがあるのでそちらも使えます。フィールドの値を取得するには、以下のgetメソッドを使います。

CFS()->get($field_name, $post_id, $options);

パラメータは3つありますが、投稿IDはデフォルトでカレントのIDがセットされるので、基本的にはフィールド名だけ入れれば値がとれます。
オプションでは出力フォーマットが変更できるようです。必要があればドキュメントを参照してください。

// 使い方例
CFS()->get('FIELD_NAME');

ループフィールドの表示方法

フィールドを「loop」にした場合はすこし表示を制御する必要があります。あと、loopフィールドにさらにカスタムフィールドを追加できるのですが、いったんloopフィールドを作って保存してからでないとループ要素の配下にフィールドを移動できないみたいなので注意が必要です。

ループフィールドも大体同じように表示させられます。ループフィールドをgetすると、ループフィールド一式の配列が取得できるのでそれをfor文で回すことで中身を取り出します。

$loopList = CFS()->get('FIELD_LIST');
if ( !empty($loopList) ):
// ループでカスタムフィールドの値を取り出す
  foreach ( $loopList as $row ):
    // テキストのフィールド
    echo $row['FIELD_NAME'];
    // ファイル:画像(ID選択時)のフィールド
    echo wp_get_attachment_image($row['FIELD_IMG'],'full');
  endforeach;
endif;

ループの中にループがあるときもこの応用でできます。

おわり