我使用解释的代码here 从包含图像url的$value(图像已上载且存在于媒体库中)获取自定义帖子类型中帖子的附加图像id。该帖子包含用户提交的一些数据和图像&;通过表单上传。当我第一次从“快速编辑”菜单发布帖子时,该功能工作正常,可以检索所有附加图像的id,然后我可以使用update\\u field命令,使用图像附件id数组将图像添加到acf图像字段。当我从编辑页面(非快速编辑菜单)更新/发布帖子时,会出现此问题。在这种情况下,该函数仅返回第一个附加图像的id,并为其他附加图像返回0。然后acf图像字段仅显示该图像。
other Description that maybe useful:
我有一个名为“pics”的自定义字段,其中包含通过表单上传的图像的url,其值如下:
pic03.png
http://insell.ir/wp-content/uploads/fsqm-files/pic03.png
pic02.png
http://insell.ir/wp-content/uploads/fsqm-files/pic02.png
pic01.jpg
http://insell.ir/wp-content/uploads/fsqm-files/pic01.jpg
我在模板中使用此代码从“pics”自定义字段提取URL,并将其保存在$attach\\u ids as array中,最后使用以下内容更新acf image字段:
<?php
$img = get_post_meta( get_the_ID(), \'pics\', true);
$imgList = explode("\\n", $img);
$attach_ids = array();
foreach ( $imgList as &$value ) {
if ( strpos( $value, \'http:\' ) !== false ) {
$attachment_id = get_attachment_id( $value );
array_push($attach_ids, $attachment_id);
}
}
// print_r ($attach_ids);
$images = update_field( \'slider_portfolio\', $attach_ids, get_the_ID() );
$images = get_field(\'slider_portfolio\');
?>
在案例1(通过快速编辑发布帖子)中,print\\r($attach\\u id);显示包含所有图像id的正确输出:
Array ( [0] => 1276 [1] => 1278 [2] => 1277 )
在案例2(通过编辑页面发布/更新帖子)中,print\\r($attach\\u id);显示此输出:
Array ( [0] => 0 [1] => 0 [2] => 1277 )
任何帮助都将不胜感激。非常感谢你。
最合适的回答,由SO网友:Hosein.HzK 整理而成
3天后,我发现问题是因为$imgList数组中url末尾有空格(最后一个url除外)!!!所以我补充道trim 对于每个url($值),并解决了问题。。。
<?php
$img = get_post_meta( get_the_ID(), \'pics\', true);
$imgList = explode("\\n", $img);
$attach_ids = array();
foreach ( $imgList as &$value ) {
if ( strpos( $value, \'http:\' ) !== false ) {
$value = trim($value);
$attachment_id = get_attachment_id( $value );
array_push($attach_ids, $attachment_id);
}
}
$images = update_field( \'slider_portfolio\', $attach_ids, get_the_ID() );
$images = get_field(\'slider_portfolio\');
?>
没有任何问题
get_attachment_id() 作用太完美了!