wordpressのプラグインCustom Field Suite、基本の使い方からネストループ(入れ子)の実装まで解説

カスタムフィールドってwordpressを使用する上でほぼ必須になってきましたね。
手動でfunctions.phpに記述していたのが懐しいですが、現在はプラグインが多く配布されていて便利になりました。

僕は現在は、カスタム投稿タイプを追加するのに、「Types」、カスタムフィールドを追加するのに、「Custom Field Suite」を使用しています。

今日は、カスタムフィールドを管理する「Custom Field Suite」の使い方を説明してみますね。
※ダウンロードやインストールは省きます

admin画面からフィールドが追加できます。追加できるタイプは以下のとおり。

 

追加可能なフィールドタイプ

フィールドタイプ名 説明
Text 1行テキスト
Textarea 複数行テキスト
Wysiwyg Editor wysiwyg入力エリア
Date カレンダーから日付選択
戻り値:YYYY-MM-DD HH:MM:SS
Color カラーピッカー
戻り値:HEX
True / False 単独のチェックボックス
戻り値:1 or 0
Select プルダウン
戻り値:value : label ※配列
File Upload ファイルアップロード
戻り値:ファイルURL もしくは アタッチメントID
User 登録ユーザーの選択
戻り値:ユーザーID ※配列
Relationship 関連Postの選択
戻り値:post ID ※配列
Loop 繰り返し可能なカスタムフィールドのセット
戻り値:登録された値 ※配列

 

フィールド追加時に戻り値などの設定

基本的には、

  • フィールドの名前(テンプレートから呼び出す際の名前)
  • フィールドのラベル(管理画面上に表示される)

上記2つを設定すればOK。タイプによっては戻り値を選べるものがあるので、その場合はその設定もお忘れなく。

 

テンプレートからの呼び出し

では、テンプレートからの呼び出しする際のタグについて説明します。
Custom Field Suiteでは、独自タグ、CFS()->get(); で登録された値を取得できます。

Text,Textarea,Wysiwyg Editor

<?php echo CFS()->get('field_name'); ?>

wysiwygの場合は、the_contentフィルターの設定は無視されます。phpなどで処理しましょう。

Date

<?php
// Output "2012-09-18 14:20:00"
echo CFS()->get('my_date');

// Output "September 18, 2012"
echo date('F j, Y', strtotime(CFS()->get('my_date')));

// Output "2012"
echo date('Y', strtotime(CFS()->get('my_date')));
?>

Color

<?php echo CFS()->get('field_name'); ?>

True / False

<?php echo CFS()->get('field_name'); ?>

Select

プルダウンに表示されるラベル値を取得する場合

<?php
$values = CFS()->get('field_name');
foreach ($values as $value => $label) {
    echo '<p>' . $value . '</p>';
}
?>

 

selectタグのvalueを取得する場合

<?php
$values = CFS()->get('field_name');
foreach ($values as $value) {
    echo '<p>' . $value . '</p>';
}
?>

File Upload

<?php echo CFS()->get('field_name'); ?>

User

<?php
$values = CFS()->get('field_name');
foreach ($values as $user_id) {
    $the_user = get_user_by('id', $user_id);
    echo $the_user->user_login;
}
?>

Relationship

<?php
$values = CFS()->get('field_name');
foreach ($values as $post_id) {
    $the_post = get_post($post_id);
    echo $the_post->post_title;
}
?>

Loop

単独ループの場合

<?php
$fields = CFS()->get('gallery');
foreach ($fields as $field) {
    echo $field['slide_title'];
    echo $field['upload'];
}
?>

 

ループの中にループがある場合(ネスト状態)

<?php
$fields = CFS()->get('gallery');
foreach ($fields as $field) {
    echo $field['slide_title'];
    $fieldloops = $field['upload'];
    foreach ($fieldloops as $fieldloop) {
    	echo $fieldloop['uploadimg'];
    }
}
?>

 

と、それぞれ上記のように呼び出します。
特にloopは記事セット、画像セットなど汎用的に繰り返すものが追加できるので入れ子をマスターできれば、おおよそどんなケースにも対応できるようになるかと思います。

※プラグインの使用をやめた場合、当然これらのメソッドは使用できなくなるので、PHPの関数・メソッドの未定義エラーが発生しページが見れなくなってしまう可能性があります。いつでも他のプラグインに乗り換えることができるようにしておきたい場合は WordPress 標準のget_post_meta()などを使用するようにしてください。

コメントを残す

メールアドレスが公開されることはありません。