Edit File by line
/home/zeestwma/richards.../wp-admin/includes
File: image.php
}
[1000] Fix | Delete
} elseif ( empty( $meta['caption'] ) && ! empty( $exif['Comments'] ) ) {
[1001] Fix | Delete
$meta['caption'] = trim( $exif['Comments'] );
[1002] Fix | Delete
}
[1003] Fix | Delete
[1004] Fix | Delete
if ( empty( $meta['credit'] ) ) {
[1005] Fix | Delete
if ( ! empty( $exif['Artist'] ) ) {
[1006] Fix | Delete
$meta['credit'] = trim( $exif['Artist'] );
[1007] Fix | Delete
} elseif ( ! empty( $exif['Author'] ) ) {
[1008] Fix | Delete
$meta['credit'] = trim( $exif['Author'] );
[1009] Fix | Delete
}
[1010] Fix | Delete
}
[1011] Fix | Delete
[1012] Fix | Delete
if ( empty( $meta['copyright'] ) && ! empty( $exif['Copyright'] ) ) {
[1013] Fix | Delete
$meta['copyright'] = trim( $exif['Copyright'] );
[1014] Fix | Delete
}
[1015] Fix | Delete
if ( ! empty( $exif['FNumber'] ) && is_scalar( $exif['FNumber'] ) ) {
[1016] Fix | Delete
$meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 );
[1017] Fix | Delete
}
[1018] Fix | Delete
if ( ! empty( $exif['Model'] ) ) {
[1019] Fix | Delete
$meta['camera'] = trim( $exif['Model'] );
[1020] Fix | Delete
}
[1021] Fix | Delete
if ( empty( $meta['created_timestamp'] ) && ! empty( $exif['DateTimeDigitized'] ) ) {
[1022] Fix | Delete
$meta['created_timestamp'] = wp_exif_date2ts( $exif['DateTimeDigitized'] );
[1023] Fix | Delete
}
[1024] Fix | Delete
if ( ! empty( $exif['FocalLength'] ) ) {
[1025] Fix | Delete
$meta['focal_length'] = (string) $exif['FocalLength'];
[1026] Fix | Delete
if ( is_scalar( $exif['FocalLength'] ) ) {
[1027] Fix | Delete
$meta['focal_length'] = (string) wp_exif_frac2dec( $exif['FocalLength'] );
[1028] Fix | Delete
}
[1029] Fix | Delete
}
[1030] Fix | Delete
if ( ! empty( $exif['ISOSpeedRatings'] ) ) {
[1031] Fix | Delete
$meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings'];
[1032] Fix | Delete
$meta['iso'] = trim( $meta['iso'] );
[1033] Fix | Delete
}
[1034] Fix | Delete
if ( ! empty( $exif['ExposureTime'] ) ) {
[1035] Fix | Delete
$meta['shutter_speed'] = (string) $exif['ExposureTime'];
[1036] Fix | Delete
if ( is_scalar( $exif['ExposureTime'] ) ) {
[1037] Fix | Delete
$meta['shutter_speed'] = (string) wp_exif_frac2dec( $exif['ExposureTime'] );
[1038] Fix | Delete
}
[1039] Fix | Delete
}
[1040] Fix | Delete
if ( ! empty( $exif['Orientation'] ) ) {
[1041] Fix | Delete
$meta['orientation'] = $exif['Orientation'];
[1042] Fix | Delete
}
[1043] Fix | Delete
}
[1044] Fix | Delete
[1045] Fix | Delete
foreach ( array( 'title', 'caption', 'credit', 'copyright', 'camera', 'iso' ) as $key ) {
[1046] Fix | Delete
if ( $meta[ $key ] && ! wp_is_valid_utf8( $meta[ $key ] ) ) {
[1047] Fix | Delete
$meta[ $key ] = utf8_encode( $meta[ $key ] );
[1048] Fix | Delete
}
[1049] Fix | Delete
}
[1050] Fix | Delete
[1051] Fix | Delete
foreach ( $meta['keywords'] as $key => $keyword ) {
[1052] Fix | Delete
if ( ! wp_is_valid_utf8( $keyword ) ) {
[1053] Fix | Delete
$meta['keywords'][ $key ] = utf8_encode( $keyword );
[1054] Fix | Delete
}
[1055] Fix | Delete
}
[1056] Fix | Delete
[1057] Fix | Delete
$meta = wp_kses_post_deep( $meta );
[1058] Fix | Delete
[1059] Fix | Delete
/**
[1060] Fix | Delete
* Filters the array of meta data read from an image's exif data.
[1061] Fix | Delete
*
[1062] Fix | Delete
* @since 2.5.0
[1063] Fix | Delete
* @since 4.4.0 The `$iptc` parameter was added.
[1064] Fix | Delete
* @since 5.0.0 The `$exif` parameter was added.
[1065] Fix | Delete
*
[1066] Fix | Delete
* @param array $meta Image meta data.
[1067] Fix | Delete
* @param string $file Path to image file.
[1068] Fix | Delete
* @param int $image_type Type of image, one of the `IMAGETYPE_XXX` constants.
[1069] Fix | Delete
* @param array $iptc IPTC data.
[1070] Fix | Delete
* @param array $exif EXIF data.
[1071] Fix | Delete
*/
[1072] Fix | Delete
return apply_filters( 'wp_read_image_metadata', $meta, $file, $image_type, $iptc, $exif );
[1073] Fix | Delete
}
[1074] Fix | Delete
[1075] Fix | Delete
/**
[1076] Fix | Delete
* Validates that file is an image.
[1077] Fix | Delete
*
[1078] Fix | Delete
* @since 2.5.0
[1079] Fix | Delete
*
[1080] Fix | Delete
* @param string $path File path to test if valid image.
[1081] Fix | Delete
* @return bool True if valid image, false if not valid image.
[1082] Fix | Delete
*/
[1083] Fix | Delete
function file_is_valid_image( $path ) {
[1084] Fix | Delete
$size = wp_getimagesize( $path );
[1085] Fix | Delete
return ! empty( $size );
[1086] Fix | Delete
}
[1087] Fix | Delete
[1088] Fix | Delete
/**
[1089] Fix | Delete
* Validates that file is suitable for displaying within a web page.
[1090] Fix | Delete
*
[1091] Fix | Delete
* @since 2.5.0
[1092] Fix | Delete
*
[1093] Fix | Delete
* @param string $path File path to test.
[1094] Fix | Delete
* @return bool True if suitable, false if not suitable.
[1095] Fix | Delete
*/
[1096] Fix | Delete
function file_is_displayable_image( $path ) {
[1097] Fix | Delete
$displayable_image_types = array( IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP, IMAGETYPE_ICO, IMAGETYPE_WEBP, IMAGETYPE_AVIF );
[1098] Fix | Delete
[1099] Fix | Delete
$info = wp_getimagesize( $path );
[1100] Fix | Delete
if ( empty( $info ) ) {
[1101] Fix | Delete
$result = false;
[1102] Fix | Delete
} elseif ( ! in_array( $info[2], $displayable_image_types, true ) ) {
[1103] Fix | Delete
$result = false;
[1104] Fix | Delete
} else {
[1105] Fix | Delete
$result = true;
[1106] Fix | Delete
}
[1107] Fix | Delete
[1108] Fix | Delete
/**
[1109] Fix | Delete
* Filters whether the current image is displayable in the browser.
[1110] Fix | Delete
*
[1111] Fix | Delete
* @since 2.5.0
[1112] Fix | Delete
*
[1113] Fix | Delete
* @param bool $result Whether the image can be displayed. Default true.
[1114] Fix | Delete
* @param string $path Path to the image.
[1115] Fix | Delete
*/
[1116] Fix | Delete
return apply_filters( 'file_is_displayable_image', $result, $path );
[1117] Fix | Delete
}
[1118] Fix | Delete
[1119] Fix | Delete
/**
[1120] Fix | Delete
* Loads an image resource for editing.
[1121] Fix | Delete
*
[1122] Fix | Delete
* @since 2.9.0
[1123] Fix | Delete
*
[1124] Fix | Delete
* @param int $attachment_id Attachment ID.
[1125] Fix | Delete
* @param string $mime_type Image mime type.
[1126] Fix | Delete
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array
[1127] Fix | Delete
* of width and height values in pixels (in that order). Default 'full'.
[1128] Fix | Delete
* @return resource|GdImage|false The resulting image resource or GdImage instance on success,
[1129] Fix | Delete
* false on failure.
[1130] Fix | Delete
*/
[1131] Fix | Delete
function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) {
[1132] Fix | Delete
$filepath = _load_image_to_edit_path( $attachment_id, $size );
[1133] Fix | Delete
if ( empty( $filepath ) ) {
[1134] Fix | Delete
return false;
[1135] Fix | Delete
}
[1136] Fix | Delete
[1137] Fix | Delete
switch ( $mime_type ) {
[1138] Fix | Delete
case 'image/jpeg':
[1139] Fix | Delete
$image = imagecreatefromjpeg( $filepath );
[1140] Fix | Delete
break;
[1141] Fix | Delete
case 'image/png':
[1142] Fix | Delete
$image = imagecreatefrompng( $filepath );
[1143] Fix | Delete
break;
[1144] Fix | Delete
case 'image/gif':
[1145] Fix | Delete
$image = imagecreatefromgif( $filepath );
[1146] Fix | Delete
break;
[1147] Fix | Delete
case 'image/webp':
[1148] Fix | Delete
$image = false;
[1149] Fix | Delete
if ( function_exists( 'imagecreatefromwebp' ) ) {
[1150] Fix | Delete
$image = imagecreatefromwebp( $filepath );
[1151] Fix | Delete
}
[1152] Fix | Delete
break;
[1153] Fix | Delete
default:
[1154] Fix | Delete
$image = false;
[1155] Fix | Delete
break;
[1156] Fix | Delete
}
[1157] Fix | Delete
[1158] Fix | Delete
if ( is_gd_image( $image ) ) {
[1159] Fix | Delete
/**
[1160] Fix | Delete
* Filters the current image being loaded for editing.
[1161] Fix | Delete
*
[1162] Fix | Delete
* @since 2.9.0
[1163] Fix | Delete
*
[1164] Fix | Delete
* @param resource|GdImage $image Current image.
[1165] Fix | Delete
* @param int $attachment_id Attachment ID.
[1166] Fix | Delete
* @param string|int[] $size Requested image size. Can be any registered image size name, or
[1167] Fix | Delete
* an array of width and height values in pixels (in that order).
[1168] Fix | Delete
*/
[1169] Fix | Delete
$image = apply_filters( 'load_image_to_edit', $image, $attachment_id, $size );
[1170] Fix | Delete
[1171] Fix | Delete
if ( function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' ) ) {
[1172] Fix | Delete
imagealphablending( $image, false );
[1173] Fix | Delete
imagesavealpha( $image, true );
[1174] Fix | Delete
}
[1175] Fix | Delete
}
[1176] Fix | Delete
[1177] Fix | Delete
return $image;
[1178] Fix | Delete
}
[1179] Fix | Delete
[1180] Fix | Delete
/**
[1181] Fix | Delete
* Retrieves the path or URL of an attachment's attached file.
[1182] Fix | Delete
*
[1183] Fix | Delete
* If the attached file is not present on the local filesystem (usually due to replication plugins),
[1184] Fix | Delete
* then the URL of the file is returned if `allow_url_fopen` is supported.
[1185] Fix | Delete
*
[1186] Fix | Delete
* @since 3.4.0
[1187] Fix | Delete
* @access private
[1188] Fix | Delete
*
[1189] Fix | Delete
* @param int $attachment_id Attachment ID.
[1190] Fix | Delete
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array
[1191] Fix | Delete
* of width and height values in pixels (in that order). Default 'full'.
[1192] Fix | Delete
* @return string|false File path or URL on success, false on failure.
[1193] Fix | Delete
*/
[1194] Fix | Delete
function _load_image_to_edit_path( $attachment_id, $size = 'full' ) {
[1195] Fix | Delete
$filepath = get_attached_file( $attachment_id );
[1196] Fix | Delete
[1197] Fix | Delete
if ( $filepath && file_exists( $filepath ) ) {
[1198] Fix | Delete
if ( 'full' !== $size ) {
[1199] Fix | Delete
$data = image_get_intermediate_size( $attachment_id, $size );
[1200] Fix | Delete
[1201] Fix | Delete
if ( $data ) {
[1202] Fix | Delete
$filepath = path_join( dirname( $filepath ), $data['file'] );
[1203] Fix | Delete
[1204] Fix | Delete
/**
[1205] Fix | Delete
* Filters the path to an attachment's file when editing the image.
[1206] Fix | Delete
*
[1207] Fix | Delete
* The filter is evaluated for all image sizes except 'full'.
[1208] Fix | Delete
*
[1209] Fix | Delete
* @since 3.1.0
[1210] Fix | Delete
*
[1211] Fix | Delete
* @param string $path Path to the current image.
[1212] Fix | Delete
* @param int $attachment_id Attachment ID.
[1213] Fix | Delete
* @param string|int[] $size Requested image size. Can be any registered image size name, or
[1214] Fix | Delete
* an array of width and height values in pixels (in that order).
[1215] Fix | Delete
*/
[1216] Fix | Delete
$filepath = apply_filters( 'load_image_to_edit_filesystempath', $filepath, $attachment_id, $size );
[1217] Fix | Delete
}
[1218] Fix | Delete
}
[1219] Fix | Delete
} elseif ( function_exists( 'fopen' ) && ini_get( 'allow_url_fopen' ) ) {
[1220] Fix | Delete
/**
[1221] Fix | Delete
* Filters the path to an attachment's URL when editing the image.
[1222] Fix | Delete
*
[1223] Fix | Delete
* The filter is only evaluated if the file isn't stored locally and `allow_url_fopen` is enabled on the server.
[1224] Fix | Delete
*
[1225] Fix | Delete
* @since 3.1.0
[1226] Fix | Delete
*
[1227] Fix | Delete
* @param string|false $image_url Current image URL.
[1228] Fix | Delete
* @param int $attachment_id Attachment ID.
[1229] Fix | Delete
* @param string|int[] $size Requested image size. Can be any registered image size name, or
[1230] Fix | Delete
* an array of width and height values in pixels (in that order).
[1231] Fix | Delete
*/
[1232] Fix | Delete
$filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size );
[1233] Fix | Delete
}
[1234] Fix | Delete
[1235] Fix | Delete
/**
[1236] Fix | Delete
* Filters the returned path or URL of the current image.
[1237] Fix | Delete
*
[1238] Fix | Delete
* @since 2.9.0
[1239] Fix | Delete
*
[1240] Fix | Delete
* @param string|false $filepath File path or URL to current image, or false.
[1241] Fix | Delete
* @param int $attachment_id Attachment ID.
[1242] Fix | Delete
* @param string|int[] $size Requested image size. Can be any registered image size name, or
[1243] Fix | Delete
* an array of width and height values in pixels (in that order).
[1244] Fix | Delete
*/
[1245] Fix | Delete
return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size );
[1246] Fix | Delete
}
[1247] Fix | Delete
[1248] Fix | Delete
/**
[1249] Fix | Delete
* Copies an existing image file.
[1250] Fix | Delete
*
[1251] Fix | Delete
* @since 3.4.0
[1252] Fix | Delete
* @access private
[1253] Fix | Delete
*
[1254] Fix | Delete
* @param int $attachment_id Attachment ID.
[1255] Fix | Delete
* @return string|false New file path on success, false on failure.
[1256] Fix | Delete
*/
[1257] Fix | Delete
function _copy_image_file( $attachment_id ) {
[1258] Fix | Delete
$dst_file = get_attached_file( $attachment_id );
[1259] Fix | Delete
$src_file = $dst_file;
[1260] Fix | Delete
[1261] Fix | Delete
if ( ! file_exists( $src_file ) ) {
[1262] Fix | Delete
$src_file = _load_image_to_edit_path( $attachment_id );
[1263] Fix | Delete
}
[1264] Fix | Delete
[1265] Fix | Delete
if ( $src_file ) {
[1266] Fix | Delete
$dst_file = str_replace( wp_basename( $dst_file ), 'copy-' . wp_basename( $dst_file ), $dst_file );
[1267] Fix | Delete
$dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), wp_basename( $dst_file ) );
[1268] Fix | Delete
[1269] Fix | Delete
/*
[1270] Fix | Delete
* The directory containing the original file may no longer
[1271] Fix | Delete
* exist when using a replication plugin.
[1272] Fix | Delete
*/
[1273] Fix | Delete
wp_mkdir_p( dirname( $dst_file ) );
[1274] Fix | Delete
[1275] Fix | Delete
if ( ! copy( $src_file, $dst_file ) ) {
[1276] Fix | Delete
$dst_file = false;
[1277] Fix | Delete
}
[1278] Fix | Delete
} else {
[1279] Fix | Delete
$dst_file = false;
[1280] Fix | Delete
}
[1281] Fix | Delete
[1282] Fix | Delete
return $dst_file;
[1283] Fix | Delete
}
[1284] Fix | Delete
[1285] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function