自 PHP 7.2 起已弃用函数 read_exif_data()
Function read_exif_data() deprecated since PHP 7.2
我在 WP 中为 PHP 7.3 进行兼容测试时收到此报告:
Function read_exif_data() is deprecated since PHP 7.2; Use exif_read_data() instead
我应该按字面意思更改它还是需要以更多方式重写该函数?
这是我的代码:
function ww_upload_photo() {
// These files need to be included as dependencies when on the front end.
require_once ABSPATH . 'wp-admin/includes/file.php';
// Let WordPress handle the upload.
// Remember, 'my_image_upload' is the name of our file input in our form above.
foreach ($_FILES['files'] as $key => $val) {
$file[$key] = $val[0];
}
$uploaded_file = wp_handle_upload($file, array(
'test_form' => false,
'test_type' => false,
));
if ($uploaded_file && !isset($uploaded_file['error'])) {
// $filename should be the path to a file in the upload directory.
$filename = $uploaded_file['file'];
// The ID of the post this attachment is for.
$parent_post_id = null;
// Check the type of file. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype(basename($filename), null);
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
'post_mime_type' => 'image/jpeg',
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
);
// Insert the attachment.
$attachment_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
$attachment_url = wp_get_attachment_url($attachment_id);
$attachment_uri = get_attached_file($attachment_id);
// $selection = json_decode(stripslashes($_POST['selection']), true);
$image = wp_get_image_editor($attachment_uri);
if (!is_wp_error($image)) {
// $exif = exif($uploaded_file);
$exif = read_exif_data($uploaded_file['file']);
//We're only interested in the orientation
$orientation = isset($exif['Orientation'])?$exif['Orientation']:0;
switch($orientation){
case 1: // nothing
break;
case 2: // horizontal flip
$image->flip(true, false);
break;
case 3: // 180 rotate left
$image->rotate(180);
break;
case 4: // vertical flip
$image->flip(false, true);
break;
case 5: // vertical flip + 90 rotate right
$image->flip(false, true);
$image->rotate(-90);
break;
case 6: // 90 rotate right
$image->rotate(-90);
break;
case 7: // horizontal flip + 90 rotate right
$image->flip(true, false);
$image->rotate(-90);
break;
case 8: // 90 rotate left
$image->rotate(90);
break;
}
#$image_old_size = $image->get_size();
// $image->crop($selection['x'], $selection['y'], $selection['w'], $selection['h']);
#$image->resize( 300, 300, true );
$saved = $image->save($attachment_uri);
#$image->save($uploaded_file['url']);
}
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once ABSPATH . 'wp-admin/includes/image.php';
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata($attachment_id, $filename);
wp_update_attachment_metadata($attachment_id, $attach_data);
$success = array(
'attachment_id' => $attachment_id,
'attachment_url' => $attachment_url,
'attachment_meta' => $attach_data,
'message' => 'File is valid, and was successfully uploaded.\n',
);
update_field('order_media', true, $attachment_id);
wp_send_json_success($success);
} else {
/**
* Error generated by _wp_handle_upload()
* @see _wp_handle_upload() in wp-admin/includes/file.php
*/
wp_send_json_success($uploaded_file['error']);
}
}
根据官方 documentation read_exif_data()
只是 exif_read_data()
函数的一个别名,该别名已在 PHP 7.2 中弃用。因此,您需要做的就是将您使用的功能更改为exif_read_data()
。它们 100% 兼容。
我在 WP 中为 PHP 7.3 进行兼容测试时收到此报告:
Function read_exif_data() is deprecated since PHP 7.2; Use exif_read_data() instead
我应该按字面意思更改它还是需要以更多方式重写该函数?
这是我的代码:
function ww_upload_photo() {
// These files need to be included as dependencies when on the front end.
require_once ABSPATH . 'wp-admin/includes/file.php';
// Let WordPress handle the upload.
// Remember, 'my_image_upload' is the name of our file input in our form above.
foreach ($_FILES['files'] as $key => $val) {
$file[$key] = $val[0];
}
$uploaded_file = wp_handle_upload($file, array(
'test_form' => false,
'test_type' => false,
));
if ($uploaded_file && !isset($uploaded_file['error'])) {
// $filename should be the path to a file in the upload directory.
$filename = $uploaded_file['file'];
// The ID of the post this attachment is for.
$parent_post_id = null;
// Check the type of file. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype(basename($filename), null);
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
'post_mime_type' => 'image/jpeg',
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
);
// Insert the attachment.
$attachment_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
$attachment_url = wp_get_attachment_url($attachment_id);
$attachment_uri = get_attached_file($attachment_id);
// $selection = json_decode(stripslashes($_POST['selection']), true);
$image = wp_get_image_editor($attachment_uri);
if (!is_wp_error($image)) {
// $exif = exif($uploaded_file);
$exif = read_exif_data($uploaded_file['file']);
//We're only interested in the orientation
$orientation = isset($exif['Orientation'])?$exif['Orientation']:0;
switch($orientation){
case 1: // nothing
break;
case 2: // horizontal flip
$image->flip(true, false);
break;
case 3: // 180 rotate left
$image->rotate(180);
break;
case 4: // vertical flip
$image->flip(false, true);
break;
case 5: // vertical flip + 90 rotate right
$image->flip(false, true);
$image->rotate(-90);
break;
case 6: // 90 rotate right
$image->rotate(-90);
break;
case 7: // horizontal flip + 90 rotate right
$image->flip(true, false);
$image->rotate(-90);
break;
case 8: // 90 rotate left
$image->rotate(90);
break;
}
#$image_old_size = $image->get_size();
// $image->crop($selection['x'], $selection['y'], $selection['w'], $selection['h']);
#$image->resize( 300, 300, true );
$saved = $image->save($attachment_uri);
#$image->save($uploaded_file['url']);
}
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once ABSPATH . 'wp-admin/includes/image.php';
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata($attachment_id, $filename);
wp_update_attachment_metadata($attachment_id, $attach_data);
$success = array(
'attachment_id' => $attachment_id,
'attachment_url' => $attachment_url,
'attachment_meta' => $attach_data,
'message' => 'File is valid, and was successfully uploaded.\n',
);
update_field('order_media', true, $attachment_id);
wp_send_json_success($success);
} else {
/**
* Error generated by _wp_handle_upload()
* @see _wp_handle_upload() in wp-admin/includes/file.php
*/
wp_send_json_success($uploaded_file['error']);
}
}
根据官方 documentation read_exif_data()
只是 exif_read_data()
函数的一个别名,该别名已在 PHP 7.2 中弃用。因此,您需要做的就是将您使用的功能更改为exif_read_data()
。它们 100% 兼容。