0

我尝试设置的方式是,如果未选择链接,则仅显示图像,但如果选择了链接以及图像,则我希望链接环绕图像,here是我目前拥有的一个例子:

<?php if(get_field('block_repeater')): ?>
     <ul>

         <?php while(has_sub_field('block_repeater')): ?>
         <li>
            <!-- problem -->
             <?php if( get_sub_field('block_link') ): ?>

                 <?php while(has_sub_field('block_image')): ?>
                    <a class="img" href="<?php the_sub_field('block_link'); ?>">
                         <img src="<?php the_sub_field('block_image'); ?>" alt="" />
                         <span class="square-arrow"></span>
                     </a>
                 <?php endwhile; ?>

             <?php endif; ?>
            <!--//problem -->

             <?php if( get_sub_field('block_image') ): ?>
                 <img src="<?php the_sub_field('block_image'); ?>" alt="" />
             <?php endif; ?>
         </li>
         <?php endwhile; ?>

     </ul>
<?php endif; ?>

尽管渲染了大约一百个,但它似乎无法正常工作:

<a class="img" href="">
<img alt="" src="">
<span class="square-arrow"></span>
</a>

不要以为有人知道我做错了什么吗?

4

1 回答 1

0

这是因为您正在执行循环并在循环html之间保留该块,while因此该块将被打印直到循环结束。

<?php while(has_sub_field('block_image')): ?>
    <!--
        This part will be printed as long as 
        has_sub_field('block_image') returns true
    -->
<?php endwhile; ?>

如果您只想打印该部分一次,然后删除循环,只需注释掉这些行,例如

<?php //while(has_sub_field('block_image')): ?>
    <!-- keep everything here as it is -->
<?php //endwhile; ?>
于 2013-09-16T21:23:10.343 回答