エンジニアリング

wordpressのプラグインカスタムフィールドテンプレート(Custom Field Template)を使ってグループ化したフィールドに対してのコントロール方法

お仕事でAndroidやってますが、たまーにお仕事以外でwordpress使ったりもします。
wordpressを使用しているとある程度投稿で制約をつけて投稿するフィールドが欲しくなったりしますよね。
ってことでだいたいカスタムフィールドテンプレートを使うことになると思うんですが、普通に利用しようとすると設定が面倒臭かったりするので、僕はプラグインの「Custom Field Template」を使用してます。

こいつ自体はフォーム自体をこんな感じでグルーピングして追加とか出来るんですよ。

便利なんですが、1件の時と複数件の場合で制御が違うので注意が必要だったりするのでそこらへんのメモ

おすすめ実装方針

1件のときも複数件の時もどっちも配列にぶっこむっていう方針がイケてると思ってます。

例えばカスタムフィールドの設定がこんな感じだったとします

[xml]
[field0]
type = fieldset_open
legend = リンク欄設定
multipul = true
multipleButton = true
[link_title]
type = textfield
size = 35
label = リンクタイトル
blank = false
[link_url]
type = textfield
size = 35
label = リンクURL
blank = false
[free_text]
type = textfield
size = 35
label = フリーテキスト欄
blank = false
[field0]
type = fieldset_close
[/xml]

で、
よく、ネットで転がっているコードを見るとこんな感じの見るんですよね

[php]
$field0 = post_custom(‘field0’);
$linkTitle= post_custom(‘link_title’);
$linkUrl= post_custom(‘link_url’);
$freeText = post_custom(‘free_text’);

if($field0 == 1){
//ここにグループが1つの場合の処理
}else{
for(){
//ここにグループのループの処理
}
}

[/php]

んーなんかわざわざ出力ロジック分けるのだるくないっすか?(笑)

[php]
$field0 = post_custom(‘field0’);
$linkTitle= post_custom(‘link_title’);
$linkUrl= post_custom(‘link_url’);
$freeText = post_custom(‘free_text’);

//配列化
if($field0 == 1){
$linkTitle = array($linkTitle);
$linkUrl = array($linkUrl);
$freeText = array($freeText);
}

//出力
for($i=0; $i<$field0; $i++){
//もろもろ出したい要素
echo $linkTitle[$i]
}

[/php]

こちらのほうが出力ロジックスッキリしていると思うのだがどうだろうか?