get_media_states

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

WordPress Version: 5.6

/**
 * Retrieves an array of media states from an attachment.
 *
 * @since 5.6.0
 *
 * @param WP_Post $post The attachment to retrieve states for.
 * @return string[] Array of media state labels keyed by their state.
 */
function get_media_states($post)
{
    static $header_images;
    $media_states = array();
    $stylesheet = get_option('stylesheet');
    if (current_theme_supports('custom-header')) {
        $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true);
        if (is_random_header_image()) {
            if (!isset($header_images)) {
                $header_images = wp_list_pluck(get_uploaded_header_images(), 'attachment_id');
            }
            if ($meta_header === $stylesheet && in_array($post->ID, $header_images, true)) {
                $media_states[] = __('Header Image');
            }
        } else {
            $header_image = get_header_image();
            // Display "Header Image" if the image was ever used as a header image.
            if (!empty($meta_header) && $meta_header === $stylesheet && wp_get_attachment_url($post->ID) !== $header_image) {
                $media_states[] = __('Header Image');
            }
            // Display "Current Header Image" if the image is currently the header image.
            if ($header_image && wp_get_attachment_url($post->ID) === $header_image) {
                $media_states[] = __('Current Header Image');
            }
        }
        if (get_theme_support('custom-header', 'video') && has_header_video()) {
            $mods = get_theme_mods();
            if (isset($mods['header_video']) && $post->ID === $mods['header_video']) {
                $media_states[] = __('Current Header Video');
            }
        }
    }
    if (current_theme_supports('custom-background')) {
        $meta_background = get_post_meta($post->ID, '_wp_attachment_is_custom_background', true);
        if (!empty($meta_background) && $meta_background === $stylesheet) {
            $media_states[] = __('Background Image');
            $background_image = get_background_image();
            if ($background_image && wp_get_attachment_url($post->ID) === $background_image) {
                $media_states[] = __('Current Background Image');
            }
        }
    }
    if ((int) get_option('site_icon') === $post->ID) {
        $media_states[] = __('Site Icon');
    }
    if ((int) get_theme_mod('custom_logo') === $post->ID) {
        $media_states[] = __('Logo');
    }
    /**
     * Filters the default media display states for items in the Media list table.
     *
     * @since 3.2.0
     * @since 4.8.0 Added the `$post` parameter.
     *
     * @param string[] $media_states An array of media states. Default 'Header Image',
     *                               'Background Image', 'Site Icon', 'Logo'.
     * @param WP_Post  $post         The current attachment object.
     */
    return apply_filters('display_media_states', $media_states, $post);
}