gpt4 book ai didi

php - 如何使用 wordpress 上的 update_field 在 ACF 上上传图片

转载 作者:可可西里 更新时间:2023-10-31 22:10:37 24 4
gpt4 key购买 nike

我有一个表单,其中有一个上传 ($_FILES['watch_photo']) 字段。

我看了一圈,才把这个功能放在一起。

它基本上获取了所有相关信息以便将来可以重复使用,完成后它将返回 $pid 数组和文件的 URL。

问题是 ACF 没有提供太多关于如何使用 update_field() 添加图像到它的字段的信息 http://www.advancedcustomfields.com/resources/functions/update_field/

function my_update_attachment($f,$pid,$t='',$c='') {
wp_update_attachment_metadata( $pid, $f );
if( !empty( $_FILES[$f]['name'] )) { //New upload
require_once( ABSPATH . 'wp-admin/includes/file.php' );

$override['action'] = 'editpost';
$file = wp_handle_upload( $_FILES[$f], $override );

if ( isset( $file['error'] )) {
return new WP_Error( 'upload_error', $file['error'] );
}

$file_type = wp_check_filetype($_FILES[$f]['name'], array(
'jpg|jpeg' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
));
if ($file_type['type']) {
$name_parts = pathinfo( $file['file'] );
$name = $file['filename'];
$type = $file['type'];
$title = $t ? $t : $name;
$content = $c;

$attachment = array(
'post_title' => $title,
'post_type' => 'attachment',
'post_content' => $content,
'post_parent' => $pid,
'post_mime_type' => $type,
'guid' => $file['url'],
);

foreach( get_intermediate_image_sizes() as $s ) {
$sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => true );
$sizes[$s]['width'] = get_option( "{$s}_size_w" ); // For default sizes set in options
$sizes[$s]['height'] = get_option( "{$s}_size_h" ); // For default sizes set in options
$sizes[$s]['crop'] = get_option( "{$s}_crop" ); // For default sizes set in options
}

$sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes );

foreach( $sizes as $size => $size_data ) {
$resized = image_make_intermediate_size( $file['file'], $size_data['width'], $size_data['height'], $size_data['crop'] );
if ( $resized )
$metadata['sizes'][$size] = $resized;
}

$attach_id = wp_insert_attachment( $attachment, $file['file'] /*, $pid - for post_thumbnails*/);

if ( !is_wp_error( $id )) {
$attach_meta = wp_generate_attachment_metadata( $attach_id, $file['file'] );
wp_update_attachment_metadata( $attach_id, $attach_meta );
}

return array(
'pid' =>$pid,
'url' =>$file['url']
);
// update_post_meta( $pid, 'a_image', $file['url'] );
}
}
}

然后我使用了下面的代码:

  • 创建一个帖子然后
  • 上传然后使用my_update_attachment处理图片
  • 最后更新高级自定义字段

代码:

$args= array(   'post_type' => 'watches',       'post_status' => 'publish'    );

$watch = wp_insert_post($args);
$att = my_update_attachment('watch_image',$watch);
update_field('field_512e085a9372a',$att['url'],$watch);

我错过了什么?任何帮助将不胜感激。

最佳答案

我遇到了同样的问题,你几乎答对了,这对我也有帮助。

查看 ACF,update_field 接受与 pidurl

相反的附件 ID

您可以替换返回数组:

return array(
'pid' =>$pid,
'url' =>$file['url']
);

使用以下数组:

return array(
'pid' =>$pid,
'url' =>$file['url'],
'file'=>$file,
'attach_id'=>$attach_id
);

然后改变

update_field('field_512e085a9372a',$att['url'],$watch);

与以下内容

update_field('field_512e085a9372a',$att['attach_id'],$watch);

关于php - 如何使用 wordpress 上的 update_field 在 ACF 上上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com