在Foreach循环中使用wp_get_Attach_Image_src

时间:2017-11-16 作者:David Alsbright

我通过高级自定义字段将10个图像添加到帖子中,它们的名称从1到10不等,例如“image\\*”,ACF设置为返回ID。

我正在尝试获取循环中每个图像的完整图像URL,并将其用作href 属性打开图像的全尺寸弹出窗口,但我不明白wp\\u get\\u attachment\\u image\\u src是如何工作的。

由于我无法使用Advanced Custom Field的转发器,所以我使用这个循环来获取自定义图像大小为的图像数组scaled, 它可以很好地生成我需要的响应图像标记:

// args    

$sizeHuge = \'scaled\'; // scaled image  
$images = array(); // img array

for($x = 1; $x <= 10; $x++) { 
        $img = get_field(\'image_\' . $x);
   if($img) {
        $images[] = $img; 
   } else {
        break;
   }
 }


<?php foreach($images as $image) { ?>

    <a href="" class="open-viewer">

        <?php echo wp_get_attachment_image( $image, $sizeHuge ); ?>

    </a>

<?php } ?>
我需要设置href 父级的属性a 元素的URL。这是我用wp\\u get\\u attachment\\u image\\u src尝试的,它不起作用,它设置了href 具有image_10\'s URL。

// args

$sizeFull = \'full\'; // full size image
$sizeHuge = \'scaled\'; // scaled image  
$images = array(); // img array

for($x = 1; $x <= 10; $x++) { 
        $img = get_field(\'image_\' . $x);
        $image_array = wp_get_attachment_image_src($img, $sizeFull);
        $link = $image_array[0];                
   if($img) {
        $images[] = $img; 
   } else {
        break;
   }
 }


<?php foreach($images as $image) { ?>

    <a href="<?php echo $link; ?>" class="open-viewer">

        <?php echo wp_get_attachment_image( $image, $sizeHuge ); ?>

    </a>

<?php } ?>

My question is: How can I set the href of a.open-viewer with the correct URL?, and secondly, why does my code fail? (debug is switched on but no errors appear).

我意识到我在这里严重误解了一些东西,我是一个PHP新手,所以任何关于我的方法的建议都将不胜感激。

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

第一个循环中的第一个为什么要打破它?如果中没有图像image_5 如果有人跳过这个继续image_6?

其次,ACF图像字段可以返回一个包含所有大小的数组。您需要设置字段以返回您Image Array

然后你可以这样做。

for($x = 1; $x <= 10; $x++) { 
    $img = get_field(\'image_\' . $x);
    if($img) {
        ?>
            <a href="<?php echo $img[\'url\']; ?>" class="open-viewer">
                <img src="<?php echo $img[\'sizes\'][\'scaled\']; ?>" alt="<?php echo $img[\'alt\']; ?>">
            </a>
        <?php
    }
}
万一你不能回来Image Array 然后您返回Image ID

for($x = 1; $x <= 10; $x++) { 
    $img_id = get_field(\'image_\' . $x);
    if($img_id) {
        $fullsize_image = wp_get_attachment_image_src($img_id, \'full\');
        ?>
            <a href="<?php echo $fullsize_image[0]; ?>" class="open-viewer">
                <?php echo wp_get_attachment_image($img_id, \'scaled\'); ?>
            </a>
        <?php
    }
}

结束

相关推荐

Images in Blog List

我只是改变了主题。我的博客页面列表用于显示我在每篇文章中使用的图像(内容图像,而非特色图像)。我使用图像的URL,而不是媒体库。单个帖子页面显示图像,但博客列表页面不会显示图像,除非我将图像添加到媒体库中。是否有任何代码和/或插件可用于确保在我将图像添加到单个帖子的内容时,该图像包含在博客列表页面上?是否有办法填充过去包含图像但不再在列表页上显示图像的帖子?谢谢