【发布时间】:2018-06-21 09:18:39
【问题描述】:
我正在尝试以编程方式将图像从 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++;
}
【问题讨论】:
-
$field_key 似乎设置为静态值。它在循环内不会改变,并且 update_field 函数会更新相同的字段 5 次。
-
@ElvinHaci 字段键是转发器的名称,因此应该保持不变,它应该向该转发器添加新行,但没有。
-
我知道。但是您的代码会更新同一字段 5 次。它没有得到附加第二行的命令,这就是它更新第一个值的原因。我认为您需要将 update_field 从循环中移出并仅调用一次。而不是将 $value 转换为 5 个元素的数组。如$value = array(array('image'=>''), array('image'=>''), ....);
-
@ElvinHaci 我在advancedcustomfields.com/resources/update_field 处关注了他们的文档(重复示例)。但是,是的,这是一个有趣的想法......你能把它放在答案中吗?
-
当然,我现在就去做
标签: php wordpress advanced-custom-fields