PluginProbe
Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF / trunk
Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF vtrunk
2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.9 2.2.8 trunk 1.10 1.3.3 1.3.4 1.3.5 1.3.5.1 1.3.5.2 1.3.6 1.3.6.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.5 All 103 releases
← All changes | inc/common/attachments.php +99 -20 1.3.5.1 → trunk View file →
@@ -1,33 +1,112 @@
1 1 <?php
2 -defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
2 +defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3 3
4 +add_action( 'delete_attachment', 'imagify_trigger_delete_attachment_hook' );
4 5 /**
5 - * Auto-optimize when a new attachment is generated
6 + * Trigger a common Imagify hook when an attachment is deleted.
6 7 *
7 - * @since 1.0
8 + * @since 1.9
9 + * @author Grégory Viguier
10 + *
11 + * @param int $post_id Attachment ID.
8 12 */
9 -add_filter( 'wp_generate_attachment_metadata', '_imagify_optimize_attachment', PHP_INT_MAX, 2 );
10 -function _imagify_optimize_attachment( $metadata, $attachment_id ) {
11 - $api_key = get_imagify_option( 'api_key', false );
12 -
13 - if ( ! empty( $api_key ) && get_imagify_option( 'auto_optimize', false ) ) {
14 - $attachment = new Imagify_Attachment( $attachment_id );
15 -
16 - // Optimize it!!!!!
17 - $attachment->optimize( null, $metadata );
13 +function imagify_trigger_delete_attachment_hook( $post_id ) {
14 + $process = imagify_get_optimization_process( $post_id, 'wp' );
15 +
16 + if ( ! $process->is_valid() ) {
17 + return;
18 18 }
19 19
20 - return $metadata;
20 + imagify_trigger_delete_media_hook( $process );
21 21 }
22 22
23 +add_action( 'imagify_delete_media', 'imagify_cleanup_after_media_deletion' );
24 +/**
25 + * Delete the backup file and the next-gen files when an attachement is deleted.
26 + *
27 + * @since 1.9
28 + * @author Grégory Viguier
29 + *
30 + * @param ProcessInterface $process An optimization process.
31 + */
32 +function imagify_cleanup_after_media_deletion( $process ) {
33 + if ( 'wp' !== $process->get_media()->get_context() ) {
34 + return;
35 + }
23 36
37 + /**
38 + * The optimization data will be automatically deleted by WP (post metas).
39 + * Delete the Nextgen versions and the backup file.
40 + */
41 + $process->delete_nextgen_files( false, true );
42 +
43 + $process->delete_backup();
44 +}
45 +
46 +add_filter( 'ext2type', 'imagify_add_avif_type' );
24 47 /**
25 - * Delete the backup file when an attachement is deleted.
48 + * Add the AVIF extension to wp_get_ext_types().
26 49 *
27 - * @since 1.0
50 + * @since 1.9
51 + * @author Grégory Viguier
52 + *
53 + * @param array $ext2type Multi-dimensional array with extensions for a default set of file types.
54 + * @return array
28 55 */
29 -add_action( 'delete_attachment', '_imagify_delete_backup_file' );
30 -function _imagify_delete_backup_file( $post_id ) {
31 - $attachment = new Imagify_Attachment( $post_id );
32 - $attachment->delete_backup();
33 -}
56 +function imagify_add_avif_type( $ext2type ) {
57 + if ( ! in_array( 'avif', $ext2type['image'], true ) ) {
58 + $ext2type['image'][] = 'avif';
59 + }
60 + return $ext2type;
61 +}
62 +
63 +/**
64 + * Set WP’s "big images threshold" to Imagify’s resizing value.
65 + *
66 + * @since 1.9.8
67 + * @since WP 5.3
68 + * @author Grégory Viguier
69 + */
70 +add_filter( 'big_image_size_threshold', [ imagify_get_context( 'wp' ), 'filter_big_image_size_threshold' ], IMAGIFY_INT_MAX );
71 +
72 +/**
73 + * Note the uploads WordPress 7.1 hands to the browser, which scales them itself.
74 + *
75 + * Fires before the attachment metadata is generated, so the threshold filter above already
76 + * knows about it by the time it runs.
77 + *
78 + * @since 2.3.3
79 + * @since WP 7.1
80 + */
81 +add_action( 'rest_after_insert_attachment', [ imagify_get_context( 'wp' ), 'maybe_flag_client_side_scaling' ], 10, 3 );
82 +
83 +/**
84 + * Add filters to manage images formats that will be generated
85 + *
86 + * @return array
87 + */
88 +function imagify_nextgen_images_formats() {
89 + $value = get_imagify_option( 'optimization_format' );
90 + $formats = [];
91 +
92 + if ( 'off' !== $value ) {
93 + $formats[ $value ] = $value;
94 + }
95 +
96 + $default = $formats;
97 +
98 + /**
99 + * Filters the array of next gen formats to generate with Imagify
100 + *
101 + * @since 2.2
102 + *
103 + * @param array $formats Array of image formats
104 + */
105 + $formats = apply_filters( 'imagify_nextgen_images_formats', $formats );
106 +
107 + if ( ! is_array( $formats ) ) {
108 + $formats = $default;
109 + }
110 +
111 + return $formats;
112 +}