私はもともと単一のフィールドを使用していました、そして、物事は以下のコードで完全に働きました。今、私はそれを似たようないくつかのフィールドのループに変更する必要があります。
はじめに:私は自分のページにいくつかのカスタムフィールド(slide1、slide2、slide3)を作成しました。これらのフィールドには画像の場所のURLが含まれています。次にいくつかのテキストフィールド(slide1_text、slide2_textなど)を作成しました。
コード的には、私は自分のテンプレートのフィールドを次のように引っ張っていました。
<?php
// check for slide
$slide = get_post_meta($post->ID, 'slide1', $single = true);
// check for slide text
$thumb_text = get_post_meta($post->ID, 'slide1_label', $single = true);
// if there's a slide
if($slide !== '') { ?>
<section class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="item active">
<img src="<?php echo $slide; ?>" class="slider-images" />
</div>
<div class="carousel-caption">
<h2><?php if($slide_text !== '') { echo $slide_text; } else { echo the_title(); } ?></h2>
</div>
</div>
</section>
<?php } // end if statement
?>
基本的にはslide1という名前のフィールドがあるかどうかをチェックし、もしあればそれを表示します。ループの追加についてはあまりよくわかりませんが、ここでの最終目標はブートストラップカルーセル用にフォーマットされたフィールドを返すことです。 (私はプラグインがあることを知っていますが、私はカップルを試してみました、そして、それらはまさに私が欲しいものではありません。)
Slide *というタイトルのフィールドがあるかどうかをチェックして確認できるように、このコードを変更してループを含めるにはどうすればよいですか。
さらに、<div class="item active">
の下のコードでわかるように、最初のスライドのクラスが "active"であることを確認できれば、他のすべてのフィールドはclass = itemになるはずです。
これを試して最大4枚のスライドをループさせ、それぞれが有効なスライドであることを確認します。
<?php
$max_slides = 4; // this should be the maximum number of slides there can be
for ($i=1; $i<=$max_slides; $i++) {
// check for slide
$key = 'slide' . $i;
$slide = get_post_meta($post->ID, $key, $single = true);
// check for slide text
$thumb_text = get_post_meta($post->ID, $key . '_label', $single = true);
// if there's a slide
if($slide !== '') { ?>
<section class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="item active">
<img src="<?php echo $slide; ?>" class="slider-images" />
</div>
<div class="carousel-caption">
<h2><?php if($slide_text !== '') { echo $slide_text; } else { echo the_title(); } ?></h2>
</div>
</div>
</section>
<?php } // end if statement
}
?>
$max_slides
を変更して4つ以上にすることができます