__( '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' ] ); } }