Php 以编程方式将图像从URL添加到WP,然后添加到repeater字段

Php 以编程方式将图像从URL添加到WP,然后添加到repeater字段,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我试图通过编程将URL中的图像添加到Wordpress媒体库中(这一部分有效),然后将每个图像添加到一个重复行中 目前,它只是将最后一个图像添加到第一行。应该有5个图像(因此中继器中有5行),但中继器只包含一行最后一个图像 我哪里做错了 在循环中输出$item时,它正确地输出了5个图像ID,因此问题似乎是更新部分,它只是覆盖了第一行。。。我放了一个中断在第一个循环之后,它显示第一个图像 // Product Carousel Images $fullpath = get_stylesheet_d

我试图通过编程将URL中的图像添加到Wordpress媒体库中(这一部分有效),然后将每个图像添加到一个重复行中

目前,它只是将最后一个图像添加到第一行。应该有5个图像(因此中继器中有5行),但中继器只包含一行最后一个图像

我哪里做错了

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

// 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++;
}
//产品转盘图像
$fullpath=get\u样式表\u目录\u uri()。“/import/”;
foreach($html->find('div[id=imageTabContent]img[class=img responsive]')作为$element){
$strippedpath=strstrstr($element->src,'images');
$url=$fullpath.$strippedpath;
$image=media\u sideload\u image($url、$post\u id、$strippedtitle、$return='id');
$images[]=$images;
}
$counter=1;
foreach($item形式的图像){
echo$项目;
回声“
”; $field_key=“field_5ae05c498ac63”; $value=数组( 排列( “image”=>$item, ) ); 更新字段($field\u key、$value、$post\u id); $counter++; }
您的代码将更新同一字段5次

它没有得到附加第二行的命令,这就是为什么它会更新第一个值。我认为您需要将update_字段从循环中移出,并只调用一次。而不是将$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 );
$value=array();
foreach($item形式的图像){
echo$项目;
回声“
”; $field_key=“field_5ae05c498ac63”; $value[]=数组( “image”=>$item, ); $counter++; } 更新字段($field\u key、$value、$post\u id);
您的代码将更新同一字段5次

它没有得到附加第二行的命令,这就是为什么它会更新第一个值。我认为您需要将update_字段从循环中移出,并只调用一次。而不是将$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 );
$value=array();
foreach($item形式的图像){
echo$项目;
回声“
”; $field_key=“field_5ae05c498ac63”; $value[]=数组( “image”=>$item, ); $counter++; } 更新字段($field\u key、$value、$post\u id);
$field\u键似乎设置为静态值。它在循环中不会改变,update_field函数会将同一个字段更新5次。@ElvinHaci field key是中继器的名称,所以它的意思是保持不变,它应该向该中继器添加新行,但没有。我知道。但您的代码将更新同一字段5次。它没有得到附加第二行的命令,这就是为什么它会更新第一个值。我认为您需要将update_字段从循环中移出,并只调用一次。而不是将$value转换为5个元素的数组。例如$value=array(array('image'=>'')、array('image'=>'')、@ElvinHaci我在这里遵循了他们的文档(repeater示例)。但这是一个有趣的想法。。。你能把它放在一个答案中吗?当然,我现在就做$field\u键似乎被设置为静态值。它在循环中不会改变,update_field函数会将同一个字段更新5次。@ElvinHaci field key是中继器的名称,所以它的意思是保持不变,它应该向该中继器添加新行,但没有。我知道。但您的代码将更新同一字段5次。它没有得到附加第二行的命令,这就是为什么它会更新第一个值。我认为您需要将update_字段从循环中移出,并只调用一次。而不是将$value转换为5个元素的数组。例如$value=array(array('image'=>'')、array('image'=>'')、@ElvinHaci我在这里遵循了他们的文档(repeater示例)。但这是一个有趣的想法。。。请你把它写在一个答案里好吗?当然,我现在就做很好,谢谢。非常接近,它现在创建了行,但没有输入图像。明白了,我删除了子字段旁边的
$counter
,它成功了!非常感谢!!太好了,谢谢。非常接近,它现在创建了行,但没有输入图像。明白了,我删除了子字段旁边的
$counter
,它成功了!非常感谢!!