繰り返しのカスタムフィールドをグループ化したようにセット表示する

Types – Custom Fields and Custom Post Types Managementというプラグインでカスタム投稿タイプを作成し、Custom Field Suiteでカスタムフィールドを実装していたのですが、カスタム投稿タイプを40個くらい作っていたためか、何個か管理画面のメニューバーから消えてしまいました。

Custom Field Suiteを停止すれば正常に表示できたため、カスタムフィールドもTyepsプラグインで作成することに。

そもそもCustom Field Suiteを使っていた理由は、セットで繰り返せるカスタムフィールドが使えるから。

suite

(Custom Field Suiteのカスタムフィールド入力画面)

↑こんな感じでカスタムフィールドをグループ化してそれを何個も追加することができます。

ところがどっこい。Typesのカスタムフィールドを使うと、繰り返しはできるもののグループ化はできませんでした。。そのため、テンプレート側も書き方を変えなくてはならず四苦八苦。
なんとか解決できたので紹介します。

こちらはカスタムフィールド作成側。メイン画像と、サムネイル画像の2つ用意します。

field

テンプレート側はこんなかんじ。

<ul>
<?php
if(have_posts()):
while(have_posts()):the_post();
$images = get_post_meta( get_the_ID(), 'wpcf-image');
$thumbnails = get_post_meta( get_the_ID(), 'wpcf-thumbnail');
?>
<li><?php if($images){ 
foreach ((array)$items as $item) { $images[] = $item; }
foreach ((array)$items2 as $item) { $thumbnails[] = $item; }
foreach($images as $key=>$item1) { $item2 = $thumbnails[$key];?>
<?php echo $item1; ?><?php echo $item2; ?>
<?php } }else { ?>
<?php echo types_render_field('image'); ?>"<?php echo types_render_field('thumbnail'); ?>
<?php } ?></li>
<?php endwhile; else: ?>
<?php endif; ?>
</ul>

これで、メイン画像とサムネイル画像が表示されるリストが完成します。html部分は用途に合わせて変えてみてください。

要するに、foreachでメイン画像の繰り返しとサムネイル画像の繰り返しを回して、それを合わせた感じです。
上手く説明できませんがw

注意点は、投稿ページでカスタムフィールドを入力する時に、対応する順番を間違えないこと!
メイン画像1・2・3、サムネイル画像2・3・1という順番になっていると対応して表示されません〜!

それが運用でカバーせずにできるのがCustom Field Suiteなんですよねぇ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA