December 17, 2023

In this article, we will explore the ins and outs of this filter, providing you with valuable insights and practical examples to make the most of its capabilities.

Understanding the display_post_states filter

Before we dive into the practical applications, let’s learn the basics of the display_post_states filter. This filter allows you to modify the states displayed for each post in the WordPress admin interface. By default, WordPress displays states such as ‘Draft’ or ‘Published,’ but with this filter, you can customize and add your states.

Customizing post states based on categories

Imagine you run a news website with various categories like Politics, Technology, and Lifestyle. With the display_post_states filter, you can add custom states indicating the category of each post. For example:

function custom_post_states($post_states, $post) {
    $category = get_the_category($post->ID);
    if ($category) {
        $post_states[] = $category[0]->name;
    return $post_states;
add_filter('display_post_states', 'custom_post_states', 10, 2);

Now, each post in the admin interface will display its primary category as a state.

Highlighting featured posts

If your website features specific posts, you can use the filter to highlight them in the admin interface:

function highlight_featured_posts($post_states, $post) {
    $is_featured = get_post_meta($post->ID, '_featured_post', true);
    if ($is_featured) {
        $post_states[] = 'Featured';
    return $post_states;
add_filter('display_post_states', 'highlight_featured_posts', 10, 2);

This example assumes you have a custom field named ‘_featured_post’ that is set to true for featured posts.

Managing editorial workflow

For a multi-author blog, you can use the filter to indicate the editorial status of each post:

function editorial_workflow_states($post_states, $post) {
    $editorial_status = get_post_meta($post->ID, '_editorial_status', true);
    if ($editorial_status) {
        $post_states[] = ucfirst($editorial_status);
    return $post_states;
add_filter('display_post_states', 'editorial_workflow_states', 10, 2);

Here, ‘_editorial_status‘ is a custom field representing the editorial status of the post.

Displaying post-expiry dates

If you run a time-sensitive website, you can use the filter to show the expiry date of posts:

function display_expiry_date($post_states, $post) {
    $expiry_date = get_post_meta($post->ID, '_expiry_date', true);
    if ($expiry_date) {
        $post_states[] = 'Expires: ' . date('M j, Y', strtotime($expiry_date));
    return $post_states;
add_filter('display_post_states', 'display_expiry_date', 10, 2);

This example assumes the existence of a custom field ‘_expiry_date’ containing the expiration date of the post.

In conclusion, the display_post_states filter in WordPress has a lot to offer and can significantly improve your content management workflow. By using post states, you can efficiently organize and manage your content based on various criteria. Whether it’s highlighting featured posts, managing editorial workflow, or displaying expiry dates, the possibilities are endless.

Was this article helpful?