我通过高级自定义字段将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新手,所以任何关于我的方法的建议都将不胜感激。
最合适的回答,由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 IDfor($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
}
}