以编程方式将图像从URL添加到WP,然后添加到中继器字段

时间:2018-06-21 09:18:40

标签: php wordpress advanced-custom-fields

我正在尝试以编程方式将URL中的图像添加到Wordpress媒体库(该部分有效),然后将每个图像添加到ACF的转发器行中。

目前,它仅将最后一张图像添加到第一行。应该有5张图片(转发器中因此有5行),但是转发器只包含最后一张图片的一行。

我要去哪里错了?

在循环中输出$item时,它正确地输出了5个图像ID,因此问题似乎是更新部分,它刚刚覆盖了第一行...我在第一行之后放了一个break;循环显示第一张图片。

// Product Carousel Images
$fullpath = get_stylesheet_directory_uri() . "/import/";
foreach($html->find('div[id=imageTabContent] img[class=img-responsive]') as $element) {

  $strippedpath = strstr($element->src, 'images');
  $url = $fullpath . $strippedpath;
  $image = media_sideload_image($url, $post_id, $strippedtitle, $return = 'id');

  $images[] = $image;

}
$counter = 1;
foreach($images as $item) {
  echo $item;
  echo "<br />";
  $field_key = "field_5ae05c498ac63";
  $value = array(
    array(
      "image"   => $item,
    )
  );
  update_field( $field_key, $value, $post_id );
  $counter++;
}

1 个答案:

答案 0 :(得分:1)

您的代码将同一字段更新5次。

它没有命令追加第二行,这就是为什么它更新第一个值的原因。我认为您需要将update_field从循环中移出并仅一次调用它。而是将$ value转换为5个元素的数组。如

$value=array();
foreach($images as $item) {
  echo $item;
  echo "<br />";
  $field_key = "field_5ae05c498ac63";
  $value[]=array(
      "image" => $item,
    );
  $counter++;
}
update_field( $field_key, $value, $post_id );