[WordPressプラグイン]Advanced Custom Fields 出力のためのメモ

カスタムフィールドを使いやすくしてくれる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 : 赤のようにすると値とラベルの両方を制御することができる」
と書いてあるのは、よくわからないので要勉強…

あと、カスタムフィールドの検索したいときは向かないようです(参考)

コメントする