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()などを使用するようにしてください。
3 thoughts on “wordpressのプラグインCustom Field Suite、基本の使い方からネストループ(入れ子)の実装まで解説”