将MIME类型转换为SQL。

原型

wp_post_mime_type_where( string|array $post_mime_types, string $table_alias = '' )

参数

$post_mime_types (string|array) (Required) mime类型列表或逗号分隔的mime类型字符串。

$table_alias (string) (Optional)  如果需要,请指定表别名。

返回值

(string)  用于mime搜索的SQL AND子句。

源文件

路径:wp-includes/post.php

<?php
...
function wp_post_mime_type_where( $post_mime_types, $table_alias = '' ) {
	$where = '';
	$wildcards = array('', '%', '%/%');
	if ( is_string($post_mime_types) )
		$post_mime_types = array_map('trim', explode(',', $post_mime_types));
	$wheres = array();
	foreach ( (array) $post_mime_types as $mime_type ) {
		$mime_type = preg_replace('/s/', '', $mime_type);
		$slashpos = strpos($mime_type, '/');
		if ( false !== $slashpos ) {
			$mime_group = preg_replace('/[^-*.a-zA-Z0-9]/', '', substr($mime_type, 0, $slashpos));
			$mime_subgroup = preg_replace('/[^-*.+a-zA-Z0-9]/', '', substr($mime_type, $slashpos + 1));
			if ( empty($mime_subgroup) )
				$mime_subgroup = '*';
			else
				$mime_subgroup = str_replace('/', '', $mime_subgroup);
			$mime_pattern = "$mime_group/$mime_subgroup";
		} else {
			$mime_pattern = preg_replace('/[^-*.a-zA-Z0-9]/', '', $mime_type);
			if ( false === strpos($mime_pattern, '*') )
				$mime_pattern .= '/*';
		}
		$mime_pattern = preg_replace('/*+/', '%', $mime_pattern);
		if ( in_array( $mime_type, $wildcards ) )
			return '';
		if ( false !== strpos($mime_pattern, '%') )
			$wheres[] = empty($table_alias) ? "post_mime_type LIKE '$mime_pattern'" : "$table_alias.post_mime_type LIKE '$mime_pattern'";
		else
			$wheres[] = empty($table_alias) ? "post_mime_type = '$mime_pattern'" : "$table_alias.post_mime_type = '$mime_pattern'";
	}
	if ( !empty($wheres) )
		$where = ' AND (' . join(' OR ', $wheres) . ') ';
	return $where;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_post_mime_type_where/