我试图设置它的方式是,如果没有选择链接,那么只会显示图像,但是如果选择了链接以及图像,那么我希望链接被包裹在图片,这是我目前所拥有的一个例子:
<?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>
不要以为有人知道我做错了什么?
答案 0 :(得分: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; ?>