我有一个可能非常基本的问题,但我无法找到解决方案。
以下是我要做的事情:我在网站上有一个图片库,每个图片都可以使用自定义元字段设置为“精选”。我想显示这个画廊的前五个特色图片。所以我需要:从图库中获取图像数组,通过该数组并使用“特色”图像创建一个新的图像数组,然后浏览该数组并仅显示前五个。
我可以成功获取数组并获取数组中的特色图像,但我知道我设置我的计数器错误,因为输出正在计算库中的所有图像,而不仅仅是标记为特征的图像。因此,我只获得3张图片 - 由于前五张图库图片,只有3张图片被标记为精选图片。我明白这一点,但我很难过如何调整这个。
以下是代码:
<?php $images = get_field('image_gallery', 'option'); // get the array of gallery images
if( $images ): ?>
<?php
$i = 0;
foreach( $images as $image ):
$featured = get_field('feature_this_image', $image['id']); // get the images that are marked featured
if ($featured && $i <= 4 ) { ?>
<div class="gallery-image"><a href="<?php echo $image['url']; ?>"><img src="<?php echo $image['sizes']['gallery-thumb']; ?>" alt="<?php echo $image['alt']; ?>" /></a></div>
<?php } $i++; endforeach; ?>
<?php endif; ?>
任何帮助将不胜感激。我显然还在学习PHP,我无法弄清楚我是否需要另一个foreach循环或移动计数器或......?我继续移动计数器并创建第一个图像的循环,或五个图像的无限循环......
提前感谢您的阅读。
答案 0 :(得分:1)
<?php
$images = get_field('image_gallery', 'option');
if( $images )
{
$i = 0;
foreach( $images as $image )
{
$featured = get_field('feature_this_image', $image['id']);
if ($featured && $i <= 4 )
{
echo "<div class='gallery-image'>";
echo "<a href=".$image['url'].">";
echo "<img src=".$image['sizes']['gallery-thumb']." alt=".$image['alt']."/>";
echo "</a>";
echo "</div>";
$i++;
}
}
?>
你只需要移动if块中的$ i增量。我还重新编写了一些代码,使它看起来更清晰。