如何在页面模板中循环自定义域?

时间:2015-11-04 作者:o_O

我最初使用的是一个字段,下面的代码工作得很好。现在我需要将其更改为几个类似字段的循环。

首先:我在页面上创建了几个自定义字段(slide1、slide2、slide3),这些字段包含图像位置的URL。接下来,我创建了一些文本字段(slide1\\u text、slide2\\u 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*的字段,如果有,则循环并获取所有字段?

此外,如果有一种方法可以确保第一张幻灯片有一个“active”类,那就太好了,如下面的代码所示<div class="item active"> 所有其他字段将仅为class=item。

1 个回复
最合适的回答,由SO网友:Aric Watson 整理而成

尝试此操作可循环浏览多达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次以上

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请