カスタムフィールドを使いやすくしてくれるWordPressプラグイン「Advanced Custom Fields」。
よく使うので使い方をメモしておきます。
配布サイト:Advanced Custom Fields
Advanced Custom Fieldsのすてきなところ
- カスタムフィールドの管理がラク
- ページや投稿、その他の条件でカスタムフィールドの出し分けも可能
- 編集画面でのカスタムフィールドの表示順や、ちょっとしたレイアウトなど簡単にカスタムできる
- カスタムフィールドのいくつかのセットを編集者が増やしていける「リピーター」タイプや、ギャラリー作成できるタイプ、いくつかのカスタムフィールドを自由に組み合わせられる「フレキシブルコンテント」タイプなんかもすてきですね、有料みたいだけど(繰り返し機能は標準装備のプラグインありました)
導入方法
割愛します~~;;
出力
WordPressではカスタムフィールドの出力にget_post_meta()を使いますが、Advanced Custom Fieldsには独自関数が用意されています。
なので独自関数のことをメモします。get_post_meta()でももちろん値は取れます。
1行テキストとか
the_field()で単純な出力、get_field()で変数に入れたりごにょごにょ…ができるそうです。
フィールド入力が必須ならthe_field()だけで手っ取り早く出力できていいですね~
<?php if(get_field( "field_name" )): ?>
<p><?php the_field( "field_name" ); ?></p>
<?php endif; ?>
↓↑どっちの書き方がいいんだろう…
<?php
$value = get_field( "field_name" );
if( $value ): ?>
<p><?php echo $value; ?></p>
<?php endif; ?>
画像
カスタムフィールドの設定の際に、返り値を「オブジェクト」「URL」「ID」と選べます。
画像についての情報量は「オブジェクト」>「ID」>「URL」みたいです。
参考:http://www.advancedcustomfields.com/resources/image/
返り値「オブジェクト」で取得できるもの
array(10) {
["id"]=>
int(15)
["alt"]=>
string(15) "altテキスト"
["title"]=>
string(12) "タイトル"
["caption"]=>
string(18) "キャプション"
["description"]=>
string(6) "説明"
["mime_type"]=>
string(10) "image/jpeg"
["url"]=>
string(29) "http://path/to/image/test.jpg"
["width"]=>
int(600)
["height"]=>
int(340)
["sizes"]=>
array(9) {
["thumbnail"]=>
string(37) "http://path/to/image/test-150x150.jpg"
["thumbnail-width"]=>
int(150)
["thumbnail-height"]=>
int(150)
["medium"]=>
string(37) "http://path/to/image/test-300x170.jpg"
["medium-width"]=>
int(300)
["medium-height"]=>
int(170)
["large"]=>
string(29) "http://path/to/image/test.jpg"
["large-width"]=>
int(600)
["large-height"]=>
int(340)
}
}
IDからURL、幅、高さ、ALT、TITLEを取得する方法(参考)
<?php
$attachment_id = get_field('image');
$size = "full"; // (thumbnail, medium, large, full or custom size(array(32,32)のように))
$image = wp_get_attachment_image_src( $attachment_id, $size );
$attachment = get_post( get_field('image') );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" height="<?php echo $image[2]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" />
wp_get_attachment_image_src()でurlと幅、高さを配列で出して(参考)
あとALTとTITLEですが、ALTってこんなふうに取れるんですね(参考)
チェックボックス
値が複数になったりするわけですが、
get_field():配列
the_field():カンマ区切りの値の文字列 だそうです
参考:http://www.advancedcustomfields.com/resources/checkbox/
<?php
if (get_field("checkbox")): ?>
<ul>
<?php
$checks = get_field("checkbox");
foreach ($checks as $check) : ?>
<li><?php echo $check; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
liで括るだけなら↓のほうが手っ取り早いか…
<ul><li><?php echo implode('</li><li>', get_field('field_name')); ?></li></ul>
「red : 赤のようにすると値とラベルの両方を制御することができる」
と書いてあるのは、よくわからないので要勉強…
あと、カスタムフィールドの検索したいときは向かないようです(参考)