The get_media_states() WordPress PHP function retrieves an array of media states from an attachment.
Usage
To use the get_media_states() function, simply pass a WP_Post
object representing the attachment as an argument.
$media_states = get_media_states( $post );
Parameters
$post
(WP_Post) – The attachment to retrieve states for.
More information
See WordPress Developer Resources: get_media_states()
Examples
Display Media States for an Attachment
This example displays the media states for a specific attachment with ID 123.
// Get the attachment post object $attachment = get_post( 123 ); // Get the media states for the attachment $media_states = get_media_states( $attachment ); // Output the media states as a comma-separated list echo implode( ', ', $media_states );
List All Attachments with Their Media States
This example lists all attachments and their media states.
// Query all attachments $args = array( 'post_type' => 'attachment', 'posts_per_page' => -1 ); $attachments = get_posts( $args ); // Loop through attachments and display their media states foreach ( $attachments as $attachment ) { $media_states = get_media_states( $attachment ); echo '<p><strong>' . $attachment->post_title . ':</strong> ' . implode( ', ', $media_states ) . '</p>'; }
Show Media States for Featured Images
This example shows the media states for featured images in a list of posts.
// Query all posts $args = array( 'post_type' => 'post', 'posts_per_page' => -1 ); $posts = get_posts( $args ); // Loop through posts and display the media states of their featured images foreach ( $posts as $post ) { $featured_image_id = get_post_thumbnail_id( $post->ID ); $attachment = get_post( $featured_image_id ); $media_states = get_media_states( $attachment ); echo '<p><strong>' . $post->post_title . ':</strong> ' . implode( ', ', $media_states ) . '</p>'; }
Filter Attachments by Media State
This example filters attachments by a specific media state, such as “Header Image”.
// Query all attachments $args = array( 'post_type' => 'attachment', 'posts_per_page' => -1 ); $attachments = get_posts( $args ); // Loop through attachments and display only those with the "Header Image" media state foreach ( $attachments as $attachment ) { $media_states = get_media_states( $attachment ); if ( in_array( 'Header Image', $media_states ) ) { echo '<p><strong>' . $attachment->post_title . ':</strong> ' . implode( ', ', $media_states ) . '</p>'; } }