From 621e909a9b4825a6c787fd7fa732279ac5c277d7 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Sun, 4 Jan 2015 02:31:29 +0000 Subject: [PATCH] Improve the handling of comma-separated mime-types in `wp_match_mime_types()`, particularly as pertains to the mime-type selector on the Media list table screen. Props mdgl. Fixes #30788. git-svn-id: https://develop.svn.wordpress.org/trunk@31042 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-media-list-table.php | 2 +- src/wp-includes/post.php | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/wp-admin/includes/class-wp-media-list-table.php b/src/wp-admin/includes/class-wp-media-list-table.php index 377e3c0201..219ebb3e12 100644 --- a/src/wp-admin/includes/class-wp-media-list-table.php +++ b/src/wp-admin/includes/class-wp-media-list-table.php @@ -75,7 +75,7 @@ class WP_Media_List_Table extends WP_List_Table { if ( !empty( $_GET['attachment-filter'] ) && strpos( $_GET['attachment-filter'], 'post_mime_type:' ) === 0 && wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $_GET['attachment-filter'] ) ) ) $selected = ' selected="selected"'; if ( !empty( $num_posts[$mime_type] ) ) - $type_links[$mime_type] = ''; + $type_links[$mime_type] = ''; } $type_links['detached'] = ''; diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 49ca9e243e..231741607e 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -2478,11 +2478,14 @@ function wp_match_mime_types( $wildcard_mime_types, $real_mime_types ) { $wild = '[-._a-z0-9]*'; foreach ( (array) $wildcard_mime_types as $type ) { - $regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $type ) ) ); - $patternses[1][$type] = "^$regex$"; - if ( false === strpos($type, '/') ) { - $patternses[2][$type] = "^$regex/"; - $patternses[3][$type] = $regex; + $mimes = array_map( 'trim', explode( ',', $type ) ); + foreach ( $mimes as $mime ) { + $regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $mime ) ) ); + $patternses[][$type] = "^$regex$"; + if ( false === strpos( $mime, '/' ) ) { + $patternses[][$type] = "^$regex/"; + $patternses[][$type] = $regex; + } } } asort( $patternses );