WordPress Version: 5.5
/**
* Outputs the attachment media states as HTML.
*
* @since 3.2.0
*
* @param WP_Post $post The attachment post to retrieve states for.
*/
function _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 (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.
*/
$media_states = apply_filters('display_media_states', $media_states, $post);
if (!empty($media_states)) {
$state_count = count($media_states);
$i = 0;
echo ' — ';
foreach ($media_states as $state) {
$sep = (++$i === $state_count) ? '' : ', ';
echo "<span class='post-state'>{$state}{$sep}</span>";
}
}
}