PluginProbe
Squeeze – Image Optimization & Compression, WEBP Conversion / 1.2
Squeeze – Image Optimization & Compression, WEBP Conversion v1.2
1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 trunk 1.0 1.1 1.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5 1.5.1 1.5.2 1.6 All 42 releases
squeeze / src / settings.php

settings.php in Squeeze – Image Optimization & Compression, WEBP Conversion 1.2, at src/settings.php

423 lines 22.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // Exit if accessed directly.
3 if (!defined('ABSPATH')) {
4 exit;
5 }
6
7 add_action('admin_menu', 'squeeze_options_page');
8 /**
9 * Add submenu page with settings under Media
10 */
11 function squeeze_options_page() {
12 add_submenu_page(
13 'upload.php',
14 __('Squeeze', 'squeeze'),
15 __('Squeeze', 'squeeze'),
16 'manage_options',
17 'squeeze',
18 'squeeze_options_page_html'
19 );
20 }
21
22 add_action('admin_menu', 'squeeze_options_bulk_page');
23 /**
24 * Add submenu page with bulk compression under Media
25 */
26 function squeeze_options_bulk_page() {
27 add_submenu_page(
28 'upload.php',
29 __('Bulk Compress With Squeeze', 'squeeze'),
30 __('Squeeze Bulk', 'squeeze'),
31 'manage_options',
32 'squeeze-bulk',
33 'squeeze_options_bulk_page_html'
34 );
35 }
36
37 /**
38 * Bulk compression page callback function
39 */
40 function squeeze_options_bulk_page_html() {
41 // check user capabilities
42 if (!current_user_can('manage_options')) {
43 return;
44 }
45 $mimes = array('image/jpeg', 'image/jpg', 'image/png');
46 $query_not_compressed = new WP_Query( array(
47 'post_type' => 'attachment',
48 'post_status' => 'inherit',
49 'post_mime_type' => $mimes,
50 'posts_per_page' => -1,
51 'fields' => 'ids',
52 'meta_query' => array(
53 'relation' => 'OR',
54 array(
55 'key' => 'squeeze_is_compressed',
56 'compare' => 'NOT EXISTS'
57 ),
58 array(
59 'key' => 'squeeze_is_compressed',
60 'compare' => '!=',
61 'value' => '1'
62 )
63 )
64 ) );
65 $query_all = new WP_Query( array(
66 'post_type' => 'attachment',
67 'post_status' => 'inherit',
68 'post_mime_type' => $mimes,
69 'posts_per_page' => -1,
70 'fields' => 'ids',
71 ) );
72 $uncompressed_count = $query_not_compressed->found_posts;
73 $total_count = $query_all->found_posts;
74 //$total_count = array_sum((array)wp_count_attachments("image"));
75 ?>
76 <div class="wrap">
77 <h1>
78 <?php echo esc_html(get_admin_page_title()); ?>
79 </h1>
80 <p><?php _e('This page allows you to compress all images in your media library.', 'squeeze'); ?></p>
81 <p><strong><?php _e('Do not close this page during the compressing process.', 'squeeze'); ?></strong></p>
82 <p><?php _e('Please note that this process may take a long time depending on the number of images in your library.', 'squeeze'); ?></p>
83
84 <?php if ($uncompressed_count === 0) { ?>
85 <p><strong><?php _e('All images in your media library are compressed.', 'squeeze'); ?></strong></p>
86 <?php } else { ?>
87 <p><?php echo sprintf(__('You have <strong>%s</strong> uncompressed JPG/PNG images from total <strong>%s</strong> JPG/PNG images in your media library.', 'squeeze'), $uncompressed_count, $total_count); ?></p>
88 <input name="squeeze_bulk" class="button button-primary" type="button" value="<?php esc_attr_e( 'Optimise all images' ); ?>" />
89 <input type="hidden" value="<?php echo implode(",", $query_not_compressed->posts); ?>" name="squeeze_bulk_ids" />
90 <p><textarea name="squeeze_bulk_log" id="squeeze_bulk_log" cols="100" rows="10" readonly></textarea></p>
91 <?php } ?>
92 </div>
93 <?php
94 }
95
96 /**
97 * Options page callback function
98 */
99 function squeeze_options_page_html() {
100 // check user capabilities
101 if (!current_user_can('manage_options')) {
102 return;
103 }
104 ?>
105 <div class="wrap">
106 <h1>
107 <?php echo esc_html(get_admin_page_title()); ?>
108 </h1>
109 <form action="options.php" method="post">
110 <?php
111 settings_errors( 'squeeze_notices' );
112 settings_fields( 'squeeze_options' );
113 do_settings_sections( 'squeeze_options' ); ?>
114 <input name="submit" class="button button-primary" type="submit" value="<?php esc_attr_e( 'Save' ); ?>" />
115 <input name="restore" class="button button-secondary" type="button" value="<?php esc_attr_e( 'Restore defaults' ); ?>" />
116 </form>
117 </div>
118 <script>
119 (function() {
120 const restore = document.querySelector("input[name='restore']")
121 /**
122 * Handle restore defaults button click
123 */
124 restore.addEventListener("click", (event) => {
125 jQuery.ajax({
126 url: squeeze.ajaxUrl,
127 type: 'POST',
128 data: {
129 action: 'squeeze_restore_defaults',
130 _ajax_nonce: squeeze.nonce
131 },
132 beforeSend: function () {
133 restore.disabled = true
134 },
135 error: function (error) {
136 console.error(error)
137 },
138 success: function (response) {
139 console.log(response)
140 if (response.success) {
141 window.location.replace(window.location.href + "&restore_defaults=true")
142 } else {
143 restore.disabled = false
144 window.location.replace(window.location.href + "&restore_defaults=false")
145 }
146 }
147 })
148 })
149 })()
150 </script>
151 <?php
152 }
153
154 add_action( 'admin_init', 'squeeze_register_settings' );
155 /**
156 * Register the settings and add the sections and fields
157 */
158 function squeeze_register_settings() {
159 register_setting( 'squeeze_options', 'squeeze_options', 'squeeze_options_validate' );
160
161 add_settings_section( 'squeeze_basic_settings', __('Basic Settings', 'squeeze'), 'squeeze_setting_basic_desc', 'squeeze_options' );
162
163 add_settings_field( 'squeeze_setting_auto_compress', __('Auto compress', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_basic_settings', array( 'label_for' => 'auto_compress', 'class' => 'squeeze_setting_auto_compress', 'type' => 'checkbox' ) );
164 //add_settings_field( 'squeeze_setting_auto_compress_original', __('Auto compress original', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_basic_settings', array( 'label_for' => 'auto_compress_original', 'class' => 'squeeze_setting_auto_compress_original', 'type' => 'checkbox' ) );
165 add_settings_field( 'squeeze_setting_backup_original', __('Backup original image', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_basic_settings', array( 'label_for' => 'backup_original', 'class' => 'squeeze_setting_backup_original', 'type' => 'checkbox' ) );
166
167 add_settings_section( 'squeeze_jpeg_settings', __('JPEG Settings', 'squeeze'), 'squeeze_setting_jpeg_desc', 'squeeze_options' );
168
169 add_settings_field( 'squeeze_setting_jpeg_quality', __('Quality', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_quality', 'class' => 'squeeze_setting_jpeg_quality', 'type' => 'range' ) );
170 add_settings_field( 'squeeze_setting_jpeg_baseline', __('Pointless spec compliance', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_baseline', 'class' => 'squeeze_setting_jpeg_baseline', 'type' => 'checkbox' ) );
171 add_settings_field( 'squeeze_setting_jpeg_arithmetic', __('Arithmetic', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_arithmetic', 'class' => 'squeeze_setting_jpeg_arithmetic', 'type' => 'checkbox' ) );
172 add_settings_field( 'squeeze_setting_jpeg_progressive', __('Progressive rendering', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_progressive', 'class' => 'squeeze_setting_jpeg_progressive', 'type' => 'checkbox' ) );
173 add_settings_field( 'squeeze_setting_jpeg_optimize_coding', __('Optimize Huffman table', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_optimize_coding', 'class' => 'squeeze_setting_jpeg_optimize_coding', 'type' => 'checkbox' ) );
174 add_settings_field( 'squeeze_setting_jpeg_smoothing', __('Smoothing', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_smoothing', 'class' => 'squeeze_setting_jpeg_smoothing', 'type' => 'range' ) );
175 add_settings_field( 'squeeze_setting_jpeg_color_space', __('Channels', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_color_space', 'class' => 'squeeze_setting_jpeg_color_space', 'type' => 'select', 'options' => array( '3' => 'YCbCr', '1' => 'Grayscale', '2' => 'RGB' ) ) );
176 add_settings_field( 'squeeze_setting_jpeg_quant_table', __('Quantization', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_quant_table', 'class' => 'squeeze_setting_jpeg_quant_table', 'type' => 'select', 'options' => array(
177 '0' => 'JPEG Annex K',
178 '1' => 'Flat',
179 '2' => 'MSSIM-tuned Kodak',
180 '3' => 'ImageMagick',
181 '4' => 'PSNR-HVS-M-tuned Kodak',
182 '5' => 'Klein et al',
183 '6' => 'Watson et al' ,
184 '7' => 'Ahumada et al' ,
185 '8' => 'Peterson et al' ,
186 ) ) );
187 add_settings_field( 'squeeze_setting_jpeg_trellis_multipass', __('Trellis multipass', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_trellis_multipass', 'class' => 'squeeze_setting_jpeg_trellis_multipass', 'type' => 'checkbox' ) );
188 add_settings_field( 'squeeze_setting_jpeg_trellis_opt_zero', __('Optimize zero block runs', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_trellis_opt_zero', 'class' => 'squeeze_setting_jpeg_trellis_opt_zero', 'type' => 'checkbox' ) );
189 add_settings_field( 'squeeze_setting_jpeg_trellis_opt_table', __('Optimize after trellis quantization', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_trellis_opt_table', 'class' => 'squeeze_setting_jpeg_trellis_opt_table', 'type' => 'checkbox' ) );
190 add_settings_field( 'squeeze_setting_jpeg_trellis_loops', __('Trellis quantization passes', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_trellis_loops', 'class' => 'squeeze_setting_jpeg_trellis_loops', 'type' => 'range', 'min' => 1, 'max' => 50 ) );
191 add_settings_field( 'squeeze_setting_jpeg_auto_subsample', __('Auto subsample chroma', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_auto_subsample', 'class' => 'squeeze_setting_jpeg_auto_subsample', 'type' => 'checkbox' ) );
192 add_settings_field( 'squeeze_setting_jpeg_chroma_subsample', __('Subsample chroma by', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_chroma_subsample', 'class' => 'squeeze_setting_jpeg_chroma_subsample', 'type' => 'range', 'min' => 1, 'max' => 4 ) );
193 add_settings_field( 'squeeze_setting_jpeg_separate_chroma_quality', __('Separate chroma quality', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_separate_chroma_quality', 'class' => 'squeeze_setting_jpeg_separate_chroma_quality', 'type' => 'checkbox' ) );
194 add_settings_field( 'squeeze_setting_jpeg_chroma_quality', __('Chroma quality', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_jpeg_settings', array( 'label_for' => 'jpeg_chroma_quality', 'class' => 'squeeze_setting_jpeg_chroma_quality', 'type' => 'range', ) );
195
196 add_settings_section( 'squeeze_png_settings', __('PNG Settings', 'squeeze'), 'squeeze_setting_png_desc', 'squeeze_options' );
197
198 add_settings_field( 'squeeze_setting_png_level', __('Effort', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_png_settings', array( 'label_for' => 'png_level', 'class' => 'squeeze_setting_png_level', 'type' => 'range', 'min' => 0, 'max' => 3 ) );
199 add_settings_field( 'squeeze_setting_png_interlace', __('Interlace', 'squeeze'), 'squeeze_options_callback', 'squeeze_options', 'squeeze_png_settings', array( 'label_for' => 'png_interlace', 'class' => 'squeeze_setting_png_interlace', 'type' => 'checkbox' ) );
200 }
201
202 /**
203 * Sanitize and validate input. Accepts an array, return a sanitized array.
204 * @param array $input
205 */
206 function squeeze_options_validate( $input ) {
207 $input['jpeg_quality'] = absint($input['jpeg_quality']);
208 $input['jpeg_smoothing'] = absint($input['jpeg_smoothing']);
209 $input['jpeg_color_space'] = absint($input['jpeg_color_space']);
210 $input['jpeg_quant_table'] = absint($input['jpeg_quant_table']);
211 $input['jpeg_trellis_loops'] = absint($input['jpeg_trellis_loops']);
212 $input['jpeg_chroma_subsample'] = absint($input['jpeg_chroma_subsample']);
213 $input['jpeg_chroma_quality'] = absint($input['jpeg_chroma_quality']);
214 $input['png_level'] = absint($input['png_level']);
215
216 $input['jpeg_baseline'] = isset( $input['jpeg_baseline'] ) ? $input['jpeg_baseline'] : '0';
217 $input['jpeg_arithmetic'] = isset( $input['jpeg_arithmetic'] ) ? $input['jpeg_arithmetic'] : '0';
218 $input['jpeg_progressive'] = isset( $input['jpeg_progressive'] ) ? $input['jpeg_progressive'] : '0';
219 $input['jpeg_optimize_coding'] = isset( $input['jpeg_optimize_coding'] ) ? $input['jpeg_optimize_coding'] : '0';
220 $input['jpeg_trellis_multipass'] = isset( $input['jpeg_trellis_multipass'] ) ? $input['jpeg_trellis_multipass'] : '0';
221 $input['jpeg_trellis_opt_zero'] = isset( $input['jpeg_trellis_opt_zero'] ) ? $input['jpeg_trellis_opt_zero'] : '0';
222 $input['jpeg_trellis_opt_table'] = isset( $input['jpeg_trellis_opt_table'] ) ? $input['jpeg_trellis_opt_table'] : '0';
223 $input['jpeg_auto_subsample'] = isset( $input['jpeg_auto_subsample'] ) ? $input['jpeg_auto_subsample'] : '0';
224 $input['jpeg_separate_chroma_quality'] = isset( $input['jpeg_separate_chroma_quality'] ) ? $input['jpeg_separate_chroma_quality'] : '0';
225 $input['png_interlace'] = isset( $input['png_interlace'] ) ? $input['png_interlace'] : '0';
226 $input['auto_compress'] = isset( $input['auto_compress'] ) ? $input['auto_compress'] : '0';
227 //$input['auto_compress_original'] = isset( $input['auto_compress_original'] ) ? $input['auto_compress_original'] : '0';
228 $input['backup_original'] = isset( $input['backup_original'] ) ? $input['backup_original'] : '0';
229
230 add_settings_error( 'squeeze_notices', 'settings_updated', __( 'Settings have been updated.', 'squeeze' ), 'success' );
231
232 return $input;
233 }
234
235 /**
236 * Display and fill the form field
237 * @param array $args
238 */
239 function squeeze_options_callback( $args ) {
240 $label_for = $args['label_for'];
241 $class = $args['class'];
242 $type = $args['type'];
243 $default = squeeze_get_default_value($label_for);
244 $options = get_option( 'squeeze_options' );
245
246 switch ($type) {
247 case 'text':
248 $value = isset($options[$label_for]) ? $options[$label_for] : $default;
249 echo "<input id='squeeze_setting_".esc_attr($label_for)."' name='squeeze_options[".esc_attr($label_for)."]' type='text' value='" . esc_attr( $value ) . "' />";
250 break;
251 case 'range':
252 $value = isset($options[$label_for]) ? $options[$label_for] : $default;
253 $min = isset($args['min']) ? $args['min'] : 0;
254 $max = isset($args['max']) ? $args['max'] : 100;
255 $step = isset($args['step']) ? $args['step'] : 1;
256 echo "<input id='squeeze_setting_".esc_attr($label_for)."' name='squeeze_options[".esc_attr($label_for)."]' min='".(int)$min."' max='".(int)$max."' step='".(int)$step."' type='range' value='" . esc_attr( $value ) . "' />";
257 echo '<output id="squeeze_setting_'.esc_attr($label_for).'_value"></output>';
258 ?>
259 <script>
260 (function () {
261 const value = document.querySelector("#squeeze_setting_<?php echo esc_attr($label_for); ?>_value")
262 const input = document.querySelector("#squeeze_setting_<?php echo esc_attr($label_for); ?>")
263 value.textContent = input.value
264 input.addEventListener("input", (event) => {
265 value.textContent = event.target.value
266 })
267 })()
268 </script>
269 <?php
270 break;
271 case 'checkbox':
272 $value = isset($options[$label_for]) ? (bool) $options[$label_for] : $default;
273 echo "<input id='squeeze_setting_".esc_attr($label_for)."' name='squeeze_options[".esc_attr($label_for)."]' type='checkbox' ".checked( $value, true, false )." />";
274 break;
275 case 'select':
276 $value = isset($options[$label_for]) ? $options[$label_for] : $default;
277 echo "<select id='squeeze_setting_".esc_attr($label_for)."' name='squeeze_options[".esc_attr($label_for)."]'>";
278 foreach ($args['options'] as $key => $option) {
279 echo "<option value='".esc_attr($key)."' ".selected( $value, $key, false ).">".esc_html($option)."</option>";
280 }
281 echo "</select>";
282 break;
283 }
284 }
285
286 /**
287 * Get default value for option
288 * @param string $option
289 * @param bool $all
290 */
291 function squeeze_get_default_value ( $option, $all = false ) {
292 $options_defaults = apply_filters('squeeze_options_default',
293 array(
294 // JPEG settings
295 'jpeg_quality' => 75,
296 'jpeg_baseline' => false,
297 'jpeg_arithmetic' => false,
298 'jpeg_progressive' => true,
299 'jpeg_optimize_coding' => true,
300 'jpeg_smoothing' => 0,
301 'jpeg_color_space' => 3,
302 'jpeg_quant_table' => 3,
303 'jpeg_trellis_multipass' => false,
304 'jpeg_trellis_opt_zero' => false,
305 'jpeg_trellis_opt_table' => false,
306 'jpeg_trellis_loops' => 1,
307 'jpeg_auto_subsample' => true,
308 'jpeg_chroma_subsample' => 2,
309 'jpeg_separate_chroma_quality' => false,
310 'jpeg_chroma_quality' => 75,
311
312 // PNG settings
313 'png_level' => 2,
314 'png_interlace' => false,
315
316 // General settings
317 'auto_compress' => true,
318 //'auto_compress_original' => false,
319 'backup_original' => true,
320 )
321 );
322 if ($all) {
323 return $options_defaults;
324 }
325 return in_array($option, array_keys($options_defaults)) ? $options_defaults[$option] : false;
326 }
327
328 function squeeze_setting_basic_desc() {
329 echo '<p>'.__('Basic options', 'squeeze').'</p>';
330 }
331 function squeeze_setting_jpeg_desc() {
332 echo '<p>'.__('Compress settings for JPEG images using MozJPEG encoder', 'squeeze').'</p>';
333 }
334 function squeeze_setting_png_desc() {
335 echo '<p>'.__('Compress settings for PNG images using OxiPNG encoder', 'squeeze').'</p>';
336 }
337
338 add_action('wp_ajax_squeeze_restore_defaults', 'squeeze_restore_defaults');
339 /**
340 * Restore default settings
341 */
342 function squeeze_restore_defaults() {
343 check_ajax_referer( 'squeeze-nonce', '_ajax_nonce' );
344 if (get_option('squeeze_options')) {
345 $result = delete_option('squeeze_options', "");
346 if (!$result) {
347 wp_send_json_error($result);
348 }
349 wp_send_json_success($result);
350 }
351 wp_send_json_success(true);
352 }
353
354 add_action( 'admin_init', 'squeeze_add_notices' );
355 /**
356 * Add custom admin notices
357 */
358 function squeeze_add_notices() {
359 global $pagenow;
360
361 if ( is_admin() && $pagenow === "upload.php" && isset($_GET['page']) && $_GET['page'] === "squeeze" && isset($_GET['restore_defaults']) && !isset($_GET['settings-updated']) ) {
362 add_settings_error( 'squeeze_notices', 'settings_restored', __( 'Settings have been restored.', 'squeeze' ), 'success' );
363 }
364
365 }
366
367 add_filter('attachment_fields_to_edit', 'squeeze_add_custom_field_to_attachment', 10, 2);
368 /**
369 * Add custom text/textarea attachment field
370 */
371 function squeeze_add_custom_field_to_attachment( $form_fields, $post ) {
372 $allowed_mimes = array(
373 'image/jpeg',
374 'image/png',
375 );
376 if ( in_array( $post->post_mime_type, $allowed_mimes ) ) {
377 $is_compressed = get_post_meta($post->ID, 'squeeze_is_compressed', true);
378 $can_restore = squeeze_can_restore($post->ID);
379 $form_fields['squeeze_is_compressed'] = array(
380 'label' => __('Squeeze', 'squeeze'),
381 'input' => 'html',
382 'html' => $is_compressed ?
383 '<label><span class="squeeze_status"><span style="padding-top: 0; line-height: 1; color: green;" class="dashicons dashicons-yes-alt"></span>&nbsp;' . __('Compressed', 'squeeze') . '</span></label>' . ($can_restore ? '
384 <br><br><button name="squeeze_restore" type="button" class="button button-secondary squeeze-restore-button" data-attachment="' . $post->ID . '">' . __('Restore original', 'squeeze') . '</button>' : '')
385 :
386 '<label><span class="squeeze_status"><span style="padding-top: 0; line-height: 1; color: red;" class="dashicons dashicons-no-alt"></span>&nbsp;' . __('Not compressed', 'squeeze') . '</span></label>
387 <br><br><button name="squeeze_compress_single" type="button" class="button button-primary squeeze-compress-button" data-attachment="' . $post->ID . '">' . __('Compress', 'squeeze') . '</button>'
388 );
389 }
390 return $form_fields;
391 }
392
393 add_filter( 'manage_media_columns', 'squeeze_add_media_columns' );
394 /**
395 * Filter the Media list table columns to add a Squeeze column.
396 *
397 * @param array $posts_columns Existing array of columns displayed in the Media list table.
398 * @return array Amended array of columns to be displayed in the Media list table.
399 */
400 function squeeze_add_media_columns( $posts_columns ) {
401 $posts_columns['squeeze'] = __( 'Squeeze', 'squeeze' );
402
403 return $posts_columns;
404 }
405
406 add_action( 'manage_media_custom_column', 'squeeze_media_custom_column', 10, 2 );
407 /**
408 * Display attachment uploaded time under `Time` custom column in the Media list table.
409 *
410 * @param string $column_name Name of the custom column.
411 */
412 function squeeze_media_custom_column( $column_name, $post_id ) {
413 if ( 'squeeze' !== $column_name ) {
414 return;
415 }
416
417 $form_fields = squeeze_add_custom_field_to_attachment( array(), get_post( $post_id ) );
418
419 if ($form_fields)
420 echo wp_kses_post($form_fields['squeeze_is_compressed']['html']);
421
422 }
423