我正在尝试以编程方式将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++;
}
答案 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 );