Media: Allow wp_check_filetype() to support query strings in URLs.

This changeset adjusts the regex in `wp_check_filetype()` to support query strings in URLs.

Follow-up to [30640], [32172].

Props voldemortensen, johnbillion, layotte, dd32, atomicjack, supercleanse, spencercameron, ianmjones, audrasjb.
Fixes #30377.


git-svn-id: https://develop.svn.wordpress.org/trunk@52829 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jb Audras
2022-03-07 22:50:12 +00:00
parent 4cee32dd66
commit 176afff375
2 changed files with 69 additions and 1 deletions

View File

@@ -2981,8 +2981,9 @@ function wp_get_default_extension_for_mime_type( $mime_type ) {
* You can optionally define the mime array, if needed.
*
* @since 2.0.4
* @since 6.0.0 URLs are now supported.
*
* @param string $filename File name or path.
* @param string $filename File name, path, or URL.
* @param string[] $mimes Optional. Array of allowed mime types keyed by their file extension regex.
* @return array {
* Values for the extension and mime type.
@@ -2998,6 +2999,15 @@ function wp_check_filetype( $filename, $mimes = null ) {
$type = false;
$ext = false;
// Strip query args and fragment from filename to reveal extension.
$query_pos = strpos( $filename, '?' );
if ( false !== $query_pos ) {
$filename = substr_replace( $filename, '', $query_pos );
}
$filename = strip_fragment_from_url( $filename );
foreach ( $mimes as $ext_preg => $mime_match ) {
$ext_preg = '!\.(' . $ext_preg . ')$!i';
if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {