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);
}