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

时间:2013-11-07 23:52:48

标签: php url foreach repeater advanced-custom-fields

我正在使用高级自定义字段转发器来抽取图片网址。但是,它显示的是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">';
}

?>

2 个答案:

答案 0 :(得分:2)

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

如果要使用return value设置为“附件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方法,return value设置为'Image Object',它应该如下所示:

<?php 
$rows = get_field('images');

foreach($rows as $row){


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

另一个解决方案是,您的回答/建议是将字段return value设置为“图片网址”,然后您可以简单地调用图片:

 <?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">';
}
 } ?>

答案 1 :(得分:-1)

看起来我需要做的是使用foreach,而只是使用和if&amp;声明。我在转发器中调用,而不是使用旧代码调用子字段。如果有人遇到这个问题,这是一个参考 -

  <?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">';
    }
  } 
  ?>