Edit File by line
/home/zeestwma/ajeebong.../wp-conte.../plugins/image-op.../modules/optimiza.../componen...
File: avif-compatibility.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace ImageOptimization\Modules\Optimization\Components;
[2] Fix | Delete
[3] Fix | Delete
use ImageOptimization\Classes\Image\Image_Dimensions;
[4] Fix | Delete
[5] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[6] Fix | Delete
exit; // Exit if accessed directly.
[7] Fix | Delete
}
[8] Fix | Delete
class Avif_Compatibility {
[9] Fix | Delete
public function is_avif_supported(): bool {
[10] Fix | Delete
return in_array( 'image/avif', get_allowed_mime_types(), true );
[11] Fix | Delete
}
[12] Fix | Delete
[13] Fix | Delete
public function add_to_supported_types( $mime_types ) {
[14] Fix | Delete
$mime_types['avif'] = 'image/avif';
[15] Fix | Delete
return $mime_types;
[16] Fix | Delete
}
[17] Fix | Delete
[18] Fix | Delete
public function add_to_supported_mime_types( $mime_types ) {
[19] Fix | Delete
$mime_types['image/avif'] = 'avif';
[20] Fix | Delete
return $mime_types;
[21] Fix | Delete
}
[22] Fix | Delete
[23] Fix | Delete
public function mark_as_displayable( $result, $path ) {
[24] Fix | Delete
if ( str_ends_with( $path, '.avif' ) ) {
[25] Fix | Delete
return true;
[26] Fix | Delete
}
[27] Fix | Delete
[28] Fix | Delete
return $result;
[29] Fix | Delete
}
[30] Fix | Delete
[31] Fix | Delete
public function fix_avif_images( $metadata, $attachment_id ) {
[32] Fix | Delete
if ( empty( $metadata ) ) {
[33] Fix | Delete
return $metadata;
[34] Fix | Delete
}
[35] Fix | Delete
[36] Fix | Delete
$attachment = get_post( $attachment_id );
[37] Fix | Delete
[38] Fix | Delete
if ( ! $attachment || is_wp_error( $attachment ) || 'image/avif' !== $attachment->post_mime_type ) {
[39] Fix | Delete
return $metadata;
[40] Fix | Delete
}
[41] Fix | Delete
[42] Fix | Delete
if ( ( ! empty( $metadata['width'] ) && ( 0 !== $metadata['width'] ) ) && ( ! empty( $metadata['height'] ) && 0 !== $metadata['height'] ) ) {
[43] Fix | Delete
return $metadata;
[44] Fix | Delete
}
[45] Fix | Delete
[46] Fix | Delete
$file = get_attached_file( $attachment_id );
[47] Fix | Delete
[48] Fix | Delete
if ( ! $file ) {
[49] Fix | Delete
return $metadata;
[50] Fix | Delete
}
[51] Fix | Delete
[52] Fix | Delete
$dimensions = Image_Dimensions::get_by_path( $file );
[53] Fix | Delete
[54] Fix | Delete
$metadata['width'] = $dimensions->width;
[55] Fix | Delete
$metadata['height'] = $dimensions->height;
[56] Fix | Delete
[57] Fix | Delete
if ( empty( $metadata['file'] ) ) {
[58] Fix | Delete
$metadata['file'] = _wp_relative_upload_path( $file );
[59] Fix | Delete
}
[60] Fix | Delete
[61] Fix | Delete
if ( empty( $metadata['sizes'] ) ) {
[62] Fix | Delete
$metadata['sizes'] = [];
[63] Fix | Delete
}
[64] Fix | Delete
[65] Fix | Delete
return $metadata;
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
public function __construct() {
[69] Fix | Delete
if ( $this->is_avif_supported() ) {
[70] Fix | Delete
return;
[71] Fix | Delete
}
[72] Fix | Delete
[73] Fix | Delete
add_filter( 'upload_mimes', [ $this, 'add_to_supported_types' ] );
[74] Fix | Delete
add_filter( 'mime_types', [ $this, 'add_to_supported_types' ] );
[75] Fix | Delete
add_filter( 'getimagesize_mimes_to_exts', [ $this, 'add_to_supported_mime_types' ] );
[76] Fix | Delete
add_filter( 'file_is_displayable_image', [ $this, 'mark_as_displayable' ], 10, 2 );
[77] Fix | Delete
[78] Fix | Delete
add_filter( 'wp_generate_attachment_metadata', [ $this, 'fix_avif_images' ], 1, 3 );
[79] Fix | Delete
}
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function