get_post_mime_types

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

WordPress Version: 6.1

/**
 * Gets default post mime types.
 *
 * @since 2.9.0
 * @since 5.3.0 Added the 'Documents', 'Spreadsheets', and 'Archives' mime type groups.
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        // array( adj, noun )
        'image' => array(
            __('Images'),
            __('Manage Images'),
            /* translators: %s: Number of images. */
            _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>'),
        ),
        'audio' => array(
            _x('Audio', 'file type group'),
            __('Manage Audio'),
            /* translators: %s: Number of audio files. */
            _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>'),
        ),
        'video' => array(
            _x('Video', 'file type group'),
            __('Manage Video'),
            /* translators: %s: Number of video files. */
            _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>'),
        ),
        'document' => array(
            __('Documents'),
            __('Manage Documents'),
            /* translators: %s: Number of documents. */
            _n_noop('Document <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>'),
        ),
        'spreadsheet' => array(
            __('Spreadsheets'),
            __('Manage Spreadsheets'),
            /* translators: %s: Number of spreadsheets. */
            _n_noop('Spreadsheet <span class="count">(%s)</span>', 'Spreadsheets <span class="count">(%s)</span>'),
        ),
        'archive' => array(
            _x('Archives', 'file type group'),
            __('Manage Archives'),
            /* translators: %s: Number of archives. */
            _n_noop('Archive <span class="count">(%s)</span>', 'Archives <span class="count">(%s)</span>'),
        ),
    );
    $ext_types = wp_get_ext_types();
    $mime_types = wp_get_mime_types();
    foreach ($post_mime_types as $group => $labels) {
        if (in_array($group, array('image', 'audio', 'video'), true)) {
            continue;
        }
        if (!isset($ext_types[$group])) {
            unset($post_mime_types[$group]);
            continue;
        }
        $group_mime_types = array();
        foreach ($ext_types[$group] as $extension) {
            foreach ($mime_types as $exts => $mime) {
                if (preg_match('!^(' . $exts . ')$!i', $extension)) {
                    $group_mime_types[] = $mime;
                    break;
                }
            }
        }
        $group_mime_types = implode(',', array_unique($group_mime_types));
        $post_mime_types[$group_mime_types] = $labels;
        unset($post_mime_types[$group]);
    }
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 5.9

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 * @since 5.3.0 Added the 'Documents', 'Spreadsheets', and 'Archives' mime type groups.
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        // array( adj, noun )
        'image' => array(
            __('Images'),
            __('Manage Images'),
            /* translators: %s: Number of images. */
            _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>'),
        ),
        'audio' => array(
            _x('Audio', 'file type group'),
            __('Manage Audio'),
            /* translators: %s: Number of audio files. */
            _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>'),
        ),
        'video' => array(
            _x('Video', 'file type group'),
            __('Manage Video'),
            /* translators: %s: Number of video files. */
            _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>'),
        ),
        'document' => array(
            __('Documents'),
            __('Manage Documents'),
            /* translators: %s: Number of documents. */
            _n_noop('Document <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>'),
        ),
        'spreadsheet' => array(
            __('Spreadsheets'),
            __('Manage Spreadsheets'),
            /* translators: %s: Number of spreadsheets. */
            _n_noop('Spreadsheet <span class="count">(%s)</span>', 'Spreadsheets <span class="count">(%s)</span>'),
        ),
        'archive' => array(
            _x('Archives', 'file type group'),
            __('Manage Archives'),
            /* translators: %s: Number of archives. */
            _n_noop('Archive <span class="count">(%s)</span>', 'Archives <span class="count">(%s)</span>'),
        ),
    );
    $ext_types = wp_get_ext_types();
    $mime_types = wp_get_mime_types();
    foreach ($post_mime_types as $group => $labels) {
        if (in_array($group, array('image', 'audio', 'video'), true)) {
            continue;
        }
        if (!isset($ext_types[$group])) {
            unset($post_mime_types[$group]);
            continue;
        }
        $group_mime_types = array();
        foreach ($ext_types[$group] as $extension) {
            foreach ($mime_types as $exts => $mime) {
                if (preg_match('!^(' . $exts . ')$!i', $extension)) {
                    $group_mime_types[] = $mime;
                    break;
                }
            }
        }
        $group_mime_types = implode(',', array_unique($group_mime_types));
        $post_mime_types[$group_mime_types] = $labels;
        unset($post_mime_types[$group]);
    }
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 5.5

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 * @since 5.3.0 Added the 'Documents', 'Spreadsheets', and 'Archives' mime type groups.
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        // array( adj, noun )
        'image' => array(
            __('Images'),
            __('Manage Images'),
            /* translators: %s: Number of images. */
            _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>'),
        ),
        'audio' => array(
            __('Audio'),
            __('Manage Audio'),
            /* translators: %s: Number of audio files. */
            _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>'),
        ),
        'video' => array(
            __('Video'),
            __('Manage Video'),
            /* translators: %s: Number of video files. */
            _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>'),
        ),
        'document' => array(
            __('Documents'),
            __('Manage Documents'),
            /* translators: %s: Number of documents. */
            _n_noop('Document <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>'),
        ),
        'spreadsheet' => array(
            __('Spreadsheets'),
            __('Manage Spreadsheets'),
            /* translators: %s: Number of spreadsheets. */
            _n_noop('Spreadsheet <span class="count">(%s)</span>', 'Spreadsheets <span class="count">(%s)</span>'),
        ),
        'archive' => array(
            _x('Archives', 'file type group'),
            __('Manage Archives'),
            /* translators: %s: Number of archives. */
            _n_noop('Archive <span class="count">(%s)</span>', 'Archives <span class="count">(%s)</span>'),
        ),
    );
    $ext_types = wp_get_ext_types();
    $mime_types = wp_get_mime_types();
    foreach ($post_mime_types as $group => $labels) {
        if (in_array($group, array('image', 'audio', 'video'), true)) {
            continue;
        }
        if (!isset($ext_types[$group])) {
            unset($post_mime_types[$group]);
            continue;
        }
        $group_mime_types = array();
        foreach ($ext_types[$group] as $extension) {
            foreach ($mime_types as $exts => $mime) {
                if (preg_match('!^(' . $exts . ')$!i', $extension)) {
                    $group_mime_types[] = $mime;
                    break;
                }
            }
        }
        $group_mime_types = implode(',', array_unique($group_mime_types));
        $post_mime_types[$group_mime_types] = $labels;
        unset($post_mime_types[$group]);
    }
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 5.4

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 * @since 5.3.0 Added the 'Documents', 'Spreadsheets', and 'Archives' mime type groups.
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        // array( adj, noun )
        'image' => array(
            __('Images'),
            __('Manage Images'),
            /* translators: %s: Number of images. */
            _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>'),
        ),
        'audio' => array(
            __('Audio'),
            __('Manage Audio'),
            /* translators: %s: Number of audio files. */
            _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>'),
        ),
        'video' => array(
            __('Video'),
            __('Manage Video'),
            /* translators: %s: Number of video files. */
            _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>'),
        ),
        'document' => array(
            __('Documents'),
            __('Manage Documents'),
            /* translators: %s: Number of documents. */
            _n_noop('Document <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>'),
        ),
        'spreadsheet' => array(
            __('Spreadsheets'),
            __('Manage Spreadsheets'),
            /* translators: %s: Number of spreadsheets. */
            _n_noop('Spreadsheet <span class="count">(%s)</span>', 'Spreadsheets <span class="count">(%s)</span>'),
        ),
        'archive' => array(
            _x('Archives', 'file type group'),
            __('Manage Archives'),
            /* translators: %s: Number of archives. */
            _n_noop('Archive <span class="count">(%s)</span>', 'Archives <span class="count">(%s)</span>'),
        ),
    );
    $ext_types = wp_get_ext_types();
    $mime_types = wp_get_mime_types();
    foreach ($post_mime_types as $group => $labels) {
        if (in_array($group, array('image', 'audio', 'video'))) {
            continue;
        }
        if (!isset($ext_types[$group])) {
            unset($post_mime_types[$group]);
            continue;
        }
        $group_mime_types = array();
        foreach ($ext_types[$group] as $extension) {
            foreach ($mime_types as $exts => $mime) {
                if (preg_match('!^(' . $exts . ')$!i', $extension)) {
                    $group_mime_types[] = $mime;
                    break;
                }
            }
        }
        $group_mime_types = implode(',', array_unique($group_mime_types));
        $post_mime_types[$group_mime_types] = $labels;
        unset($post_mime_types[$group]);
    }
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 5.3

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 * @since 5.3.0 Added the 'Documents', 'Spreadsheets', and 'Archives' mime type groups.
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        //	array( adj, noun )
        'image' => array(
            __('Images'),
            __('Manage Images'),
            /* translators: %s: Number of images. */
            _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>'),
        ),
        'audio' => array(
            __('Audio'),
            __('Manage Audio'),
            /* translators: %s: Number of audio files. */
            _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>'),
        ),
        'video' => array(
            __('Video'),
            __('Manage Video'),
            /* translators: %s: Number of video files. */
            _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>'),
        ),
        'document' => array(
            __('Documents'),
            __('Manage Documents'),
            /* translators: %s: Number of documents. */
            _n_noop('Document <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>'),
        ),
        'spreadsheet' => array(
            __('Spreadsheets'),
            __('Manage Spreadsheets'),
            /* translators: %s: Number of spreadsheets. */
            _n_noop('Spreadsheet <span class="count">(%s)</span>', 'Spreadsheets <span class="count">(%s)</span>'),
        ),
        'archive' => array(
            _x('Archives', 'file type group'),
            __('Manage Archives'),
            /* translators: %s: Number of archives. */
            _n_noop('Archive <span class="count">(%s)</span>', 'Archives <span class="count">(%s)</span>'),
        ),
    );
    $ext_types = wp_get_ext_types();
    $mime_types = wp_get_mime_types();
    foreach ($post_mime_types as $group => $labels) {
        if (in_array($group, array('image', 'audio', 'video'))) {
            continue;
        }
        if (!isset($ext_types[$group])) {
            unset($post_mime_types[$group]);
            continue;
        }
        $group_mime_types = array();
        foreach ($ext_types[$group] as $extension) {
            foreach ($mime_types as $exts => $mime) {
                if (preg_match('!^(' . $exts . ')$!i', $extension)) {
                    $group_mime_types[] = $mime;
                    break;
                }
            }
        }
        $group_mime_types = implode(',', array_unique($group_mime_types));
        $post_mime_types[$group_mime_types] = $labels;
        unset($post_mime_types[$group]);
    }
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 4.6

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        //	array( adj, noun )
        'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
        'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
        'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
    );
    /**
     * Filters the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 4.0

/**
 * Get default post mime types.
 *
 * @since 2.9.0
 *
 * @return array List of post mime types.
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        //	array( adj, noun )
        'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
        'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
        'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
    );
    /**
     * Filter the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 3.9

/**
 * Get default post mime types
 *
 * @since 2.9.0
 *
 * @return array
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        //	array( adj, noun )
        'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
        'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
        'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
    );
    /**
     * Filter the default list of post mime types.
     *
     * @since 2.5.0
     *
     * @param array $post_mime_types Default list of post mime types.
     */
    return apply_filters('post_mime_types', $post_mime_types);
}

WordPress Version: 3.7

/**
 * Get default post mime types
 *
 * @since 2.9.0
 *
 * @return array
 */
function get_post_mime_types()
{
    $post_mime_types = array(
        //	array( adj, noun )
        'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
        'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
        'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
    );
    return apply_filters('post_mime_types', $post_mime_types);
}