if语句仍然输出代码,尽管不是真的

时间:2017-12-18 17:35:01

标签: php wordpress advanced-custom-fields

<?php if(have_rows('image_slideshow')): ?>包裹的代码仍在输出,尽管没有行,即imagecentered_text字段中没有数据。如何构造这个if语句,以便只在图像和居中字段中的一个或两个都有数据时输出代码?

<?php if(have_rows('image_slideshow')): ?>
    <div class="section-intro">
        <div class="slides owl-carousel">
            <?php while( have_rows('image_slideshow') ): the_row();
                $image = get_sub_field('image');
                $content = get_sub_field('centered_text'); 
            ?>
            <div class="slide intro" 
            <?php if(!empty($image)): ?>
                style="background-image: url('<?php echo $image['url']; ?>')" 
            <?php endif; ?>
            >
                <?php echo $content; ?>
            </div>           
            <?php endwhile; ?>
        </div>
    </div>
<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

什么是&#39; image_slideshow&#39; ??它不是变量。这只是一个字符串。你怎么能把它放到一个明显的函数have_rows()...来验证它有行的字符串?它简单而且永远是真实的。

应该是:

<?php if(have_rows($variable_that_contains_the_rows)):?>

或者这种更直接的方式:

<?php if(count((array) $variable_that_contains_the_rows)): ?>

我会在一段时间后添加:

<?php if(count((array) have_rows('image_slideshow'))): ?>