我有一个前端表格的网站,用户可以在其中添加新帖子。表单包含一些基本的帖子详细信息和特色图像字段。该表单还有一些图像字段,由acf控制。
现在的问题是当我使用像png这样的图像时,一切正常。但是当我使用像jpg这样的图像时,它会产生内部服务器错误。在acf中,我已将接受的文件格式添加为“jpg,png,jpeg”。但我不知道如何为特色图片添加文件格式。
这是我正在使用的代码。这里第一张图片将始终是特色图片。
foreach( $_FILES as $file ) {
if( is_array( $file ) ) {
if($count==1){
$featured_image_id = upload_user_file( $file );
}else{
$item_image[] = upload_user_file( $file );
}
}
$count++;
}
这是upload_user_file函数
function upload_user_file( $file = array() ) {
require_once( ABSPATH . 'wp-admin/includes/admin.php' );
$file_return = wp_handle_upload( $file, array('test_form' => false ) );
if( isset( $file_return['error'] ) || isset( $file_return['upload_error_handler'] ) ) {
return false;
} else {
$filename = $file_return['file'];
$attachment = array(
'post_mime_type' => $file_return['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
'post_content' => '',
'post_status' => 'inherit',
'guid' => $file_return['url']
);
$attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $filename );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
if( 0 < intval( $attachment_id ) ) {
return $attachment_id;
}
}
return false;
}
答案 0 :(得分:0)
好的,我解决了。出于某种原因,acf中允许的文件类型对我不起作用。所以我只是删除了类型(即允许所有文件类型),一切都恢复了生机。我知道这可能并不适合所有人,但我想这可以指出问题所在的正确方向。