制作記事 Web制作アプリケーションWordPress入力フォームを自由にカスタマイズできる「Advanced Custom Fields」

入力フォームを自由にカスタマイズできる「Advanced Custom Fields」

Movable Typeでいうところのカスタムフィールドを使おうとしたら、Wordpressでは「Advanced Custom Fields」というプラグインが超絶オススメ。
「Advanced Custom Fields」を使うと、たとえば、「投稿」の場合は、とか「個別ページ」の場合は、とか「投稿のあるカテゴリー」の場合は、というような特定の条件に合わせて、入力フォームをカスタマイズできるようになる。
ここでは、導入方法と使い方は省略して、テンプレートへの記述方法を備忘録。

テキスト、テキストエリア、数値、メール、パスワード

画面に表示する

the_field('フィールド名');

値を取得する

get_field('フィールド名');

値がない場合は、false が返却される

例:値がある場合だけ要素をつけて表示する

if (get_field('フィールド名')) {
  echo '<p>'.get_field('フィールド名').'</p>';
}

画像

フィールドを登録する際に、フィールドタイプを画像にすると、返り値を設定できるようになる。
選択できるのは「画像オブジェクト」「画像URL」「画像ID」のいずれか。
テンプレートへの書き方はテキストと同じだが、どれを選択するかで取得内容が変わるので注意。
個人的には「画像ID」一択。

「画像ID」の場合

たとえば、画像IDとWordpressであらかじめ用意されている関数wp_get_attachment_image_srcを使って、サイズ指定した画像情報を配列で取得することができる。配列のひとつめにURL情報が返却されます。また、第1引数にセットされた値の画像がない場合、falseが返却されます。

// 取得
wp_get_attachment_image_src(get_field('フィールド名'), "medium");

第1引数にはIDを、第2引数には画像サイズ(thumbnail, medium, large, full)を指定。

if (get_field('フィールド名')) {
  echo '<img src="'.wp_get_attachment_image_src(get_field('フィールド名'), "medium")[0].'">';
}

「画像URL」の場合

WordPressのメディアに登録した画像をそのまま使用する場合は、画像URLを選択しておくといい。

「画像オブジェクト」の場合

フィールド登録時のデフォルト値。画像情報を含んだ配列が返却される。

var_dump(get_field('img_obj'));

とりあえず何が返却されているか出力結果を確認すると。。。いろいろあります(実際には自分は使わなそうなので割愛)。