カスタムフィールドを実装したい
WordPressのカスタムフィールドは、投稿にタイトルやコンテンツ以外の入力欄を追加できる機能。
ECサイトなど、ある程度決まったフォーマットで様々なコンテンツを作成する必要があるときに効果的。
例えば、
- ファイルをアップロードできる
- チェックボックスやラジオボタンで選択できる
- 決まった項目を入力するテキストボックス
など
投稿画面にカスタムフィールドを追加する方法
導入が簡単かつ、効率的な運営ができるのがプラグインを使った方法。
Custom Field Templateが使いやすそうと感じた。
カスタムフィールドの基本的な仕組み
入力欄に入力された内容は、「ポストメタ(post_meta)と呼ばれるデータとして、投稿本体と一緒にデータベースに保存される。
入力内容をページに表示するためには、保存されたポストメタを取得し、HTMLに出力するようなプログラムをテンプレートファイルに記述する必要がある。
テンプレートコンテンツの設定例
[link]
type=checkbox
value = linknone
valueLabel = リンクなし
1行目の[]で囲まれた部分。
これが、テキストフィールドに入力された値を取得するのに必要な「キー」になる
値を取得するには、post_custom()
関数を使います。
値をHTMLに出力するのではなく、返す。
取得した値が文字列の場合、文字列が返ってくる。
値を取得できなかった場合、falceが返ってくる。
post_custom('link')
入力欄がテキストフィールドやテキストエリアだった場合→文字列が返る
チェックボックスやラジオボタンなど値が複数の場合→配列が返る
カスタムフィールドの値を使った条件分岐
<?php if(post_custom('link')):?>
//値が取得できたときに行う処理
<?php endif;?>
チェックボックスの値を一つずつ処理する
<?php $post_custom = post_custom('link')(
//取得した値を変数$post_customに代入
if($post_custom):
//$post_customがfalse出ない時だけ処理
?>
プラグインAdvanced Custom Fieldsが使いやすかった
https://www.kerenor.jp/advanced-custom-fields-checkbox/
https://www.kerenor.jp/loop-sorted-by-customfield/