__( 'All Media Files', 'image-optimization' ),
'optimized' => __( 'Optimized', 'image-optimization' ),
'not-optimized' => __( 'Unoptimized', 'image-optimization' ),
'in-progress' => __( 'In progress', 'image-optimization' ),
'failed' => __( 'Errors', 'image-optimization' ),
];
$current_value = $this->get_current_filter();
?>
get_current_filter();
if ( empty( $current_value ) ) {
return;
}
$meta_query = empty( $query->get( 'meta_query' ) ) ? [] : $query->get( 'meta_query' );
$meta_query[] = [
[
'key' => '_wp_attachment_metadata', // Images without this field considered invalid
'compare' => 'EXISTS',
],
];
switch ( $current_value ) {
case 'not-optimized':
$meta_query[] = [
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
'compare' => 'NOT EXISTS',
];
break;
case 'optimized':
$meta_query[] = [
'compare' => 'LIKE',
'value' => '"status";s:9:"optimized"',
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
];
break;
case 'in-progress':
$meta_query[] = [
'compare' => 'LIKE',
'value' => '-in-progress"', // Covers both optimization and restoring
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
];
break;
case 'failed':
$meta_query[] = [
'compare' => 'LIKE',
'value' => '-failed"', // Covers both optimization and restoring
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
];
break;
}
$query->set( 'meta_query', $meta_query );
}
private function get_current_filter(): string {
return sanitize_text_field( wp_unslash( $_GET['image-optimization-filter'] ?? '' ) );
}
public function __construct() {
add_filter( 'restrict_manage_posts', [ $this, 'add_filter' ] );
add_filter( 'parse_query', [ $this, 'handle_filter' ] );
}
}