ACF 中继器显示 ID,而不是 URL


ACF Repeater showing ID, not URL

我正在使用高级自定义字段中继器来抽出图像URL。但是,它显示的是 ID,而不是 URL。非常感谢任何帮助,谢谢。这是我的代码:

<?php 
$rows = get_field('images');
foreach($rows as $row){
$image = wp_get_attachment_image_src(get_sub_field('image'), 'full');
//var_dump($row['image']);
echo  '<img src="'. $row['image']['url'] . '" class="shadowed forced">';
}
?>

在回答您的问题时,它不起作用,因为get_sub_field必须在 while 语句中与 has_sub_field() 结合使用,并且因为您的$row['image']['url']引用的是图像对象(通过字段菜单上的返回值设置),而看起来好像您实际上让字段返回"附件 ID"。

如果要使用返回

值设置为"附件 ID"的 foreach,则需要使用返回的对象/数组,如下所示:

<?php 
$rows = get_field('images');
foreach($rows as $row){
$image = wp_get_attachment_image_src($row['image'], 'full');
echo  '<img src="'. $image[0] . '" class="shadowed forced">';
}
?>

如果要使用 foreach 方法,并将返回值设置为"图像对象",它应如下所示:

<?php 
$rows = get_field('images');
foreach($rows as $row){

echo  '<img src="'. $row['image']['url'] . '" class="shadowed forced">';
}?>

另一种解决方案,您的答案/建议是将字段返回值设置为"图像URL",然后您可以简单地像这样调用图像:

 <?php $rows = get_field('images');
if ($rows) 
{
 while (has_sub_field('images')) 
{  
 $image = get_sub_field('image');
  echo '<img src="'. $image . '" class="shadowed forced">';
}
 } ?>

或者,如果您想显示不同大小的图像,您也可以将"返回值"设置为"图像对象",并执行以下操作:

<?php $rows = get_field('images');
if ($rows) 
{
 while (has_sub_field('images')) 
{  
 $image = get_sub_field('image');
  echo '<img src="'. $image['sizes']['large'] . '" class="shadowed forced">';
}
 } ?>

看起来我需要做的不是使用 foreach,而只是使用 and if & while 语句。我调用的是中继器,而不是带有旧代码的子字段。如果有人遇到此问题,这里有一个参考 -

  <?php 
  $rows = get_field('images');
  if ($rows) 
  {
    while (has_sub_field('images')) 
    {  
      $image = wp_get_attachment_image_src(get_sub_field('image'), 'full');
      echo '<img src="'. $image[0] . '" class="shadowed forced">';
    }
  } 
  ?>