php – 如何使用wordpress上的update_field在ACF上上传图像
发布时间:2020-09-01 15:27:14 所属栏目:PHP 来源:互联网
导读:我有一个表单,它有一个上传($_FILES [‘watch_photo]]字段. 我已经环顾四周了,把这个功能放在一起. 它基本上接收所有相关信息,以便将来可以重新使用,它将返回一个数组的$pid和文件的URL,当它完成. 问题是ACF没有提供很多信息,如何使用update_field()http://ww
|
我有一个表单,它有一个上传($_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'] );
}
}
}
然后我使用以下代码: >创建一个帖子然后 代码: $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接受附件ID作为反对的pid或url 您可以替换返回数组: return array(
'pid' =>$pid,'url' =>$file['url']
);
使用以下数组: return array( 'pid' =>$pid,'url' =>$file['url'],'file'=>$file,'attach_id'=>$attach_id ); 然后改变 update_field('field_512e085a9372a',$watch);
以下 update_field('field_512e085a9372a',$att['attach_id'],$watch);
我也在这里写了这个http://www.jqui.net/wordpress/acf-upload-image-made-easy/ (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
