wp_post_mime_type_where

The timeline below displays how wordpress function wp_post_mime_type_where has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Converts MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|string[] $post_mime_types List of mime types or comma separated string
 *                                         of mime types.
 * @param string          $table_alias     Optional. Specify a table alias, if needed.
 *                                         Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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 (!str_contains($mime_pattern, '*')) {
                $mime_pattern .= '/*';
            }
        }
        $mime_pattern = preg_replace('/\*+/', '%', $mime_pattern);
        if (in_array($mime_type, $wildcards, true)) {
            return '';
        }
        if (str_contains($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 (' . implode(' OR ', $wheres) . ') ';
    }
    return $where;
}

WordPress Version: 6.1

/**
 * Converts MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|string[] $post_mime_types List of mime types or comma separated string
 *                                         of mime types.
 * @param string          $table_alias     Optional. Specify a table alias, if needed.
 *                                         Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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, true)) {
            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 (' . implode(' OR ', $wheres) . ') ';
    }
    return $where;
}

WordPress Version: 5.7

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|string[] $post_mime_types List of mime types or comma separated string
 *                                         of mime types.
 * @param string          $table_alias     Optional. Specify a table alias, if needed.
 *                                         Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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, true)) {
            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 (' . implode(' OR ', $wheres) . ') ';
    }
    return $where;
}

WordPress Version: 5.6

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|array $post_mime_types List of mime types or comma separated string
 *                                      of mime types.
 * @param string       $table_alias     Optional. Specify a table alias, if needed.
 *                                      Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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, true)) {
            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 (' . implode(' OR ', $wheres) . ') ';
    }
    return $where;
}

WordPress Version: 5.5

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|array $post_mime_types List of mime types or comma separated string
 *                                      of mime types.
 * @param string       $table_alias     Optional. Specify a table alias, if needed.
 *                                      Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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, true)) {
            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;
}

WordPress Version: 4.2

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|array $post_mime_types List of mime types or comma separated string
 *                                      of mime types.
 * @param string       $table_alias     Optional. Specify a table alias, if needed.
 *                                      Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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;
}

WordPress Version: 4.0

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|array $post_mime_types List of mime types or comma separated string
 *                                      of mime types.
 * @param string       $table_alias     Optional. Specify a table alias, if needed.
 *                                      Default empty.
 * @return string The SQL AND clause for mime searching.
 */
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));
    }
    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;
}

WordPress Version: 3.7

/**
 * Convert MIME types into SQL.
 *
 * @since 2.5.0
 *
 * @param string|array $post_mime_types List of mime types or comma separated string of mime types.
 * @param string $table_alias Optional. Specify a table alias, if needed.
 * @return string The SQL AND clause for mime searching.
 */
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));
    }
    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;
}