_post_states

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

WordPress Version: 6.1

/**
 * Echoes or returns the post states as HTML.
 *
 * @since 2.7.0
 * @since 5.3.0 Added the `$display` parameter and a return value.
 *
 * @see get_post_states()
 *
 * @param WP_Post $post    The post to retrieve states for.
 * @param bool    $display Optional. Whether to display the post states as an HTML string.
 *                         Default true.
 * @return string Post states string.
 */
function _post_states($post, $display = true)
{
    $post_states = get_post_states($post);
    $post_states_string = '';
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        $post_states_string .= ' — ';
        foreach ($post_states as $state) {
            ++$i;
            $separator = ($i < $state_count) ? ', ' : '';
            $post_states_string .= "<span class='post-state'>{$state}{$separator}</span>";
        }
    }
    if ($display) {
        echo $post_states_string;
    }
    return $post_states_string;
}

WordPress Version: 5.9

/**
 * Function to echo or return the post states as HTML.
 *
 * @since 2.7.0
 * @since 5.3.0 Added the `$echo` parameter and a return value.
 *
 * @see get_post_states()
 *
 * @param WP_Post $post The post to retrieve states for.
 * @param bool    $echo Optional. Whether to echo the post states as an HTML string. Default true.
 * @return string Post states string.
 */
function _post_states($post, $echo = true)
{
    $post_states = get_post_states($post);
    $post_states_string = '';
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        $post_states_string .= ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            $sep = ($i < $state_count) ? ', ' : '';
            $post_states_string .= "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
    if ($echo) {
        echo $post_states_string;
    }
    return $post_states_string;
}

WordPress Version: 5.5

/**
 * Function to echo or return the post states as HTML.
 *
 * @since 2.7.0
 * @since 5.3.0 Added the `$echo` parameter and a return value.
 *
 * @see get_post_states()
 *
 * @param WP_Post $post The post to retrieve states for.
 * @param bool    $echo Optional. Whether to echo the post states as an HTML string. Default true.
 * @return string Post states string.
 */
function _post_states($post, $echo = true)
{
    $post_states = get_post_states($post);
    $post_states_string = '';
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        $post_states_string .= ' &mdash; ';
        foreach ($post_states as $state) {
            $sep = (++$i === $state_count) ? '' : ', ';
            $post_states_string .= "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
    if ($echo) {
        echo $post_states_string;
    }
    return $post_states_string;
}

WordPress Version: 5.3

/**
 * Function to echo or return the post states as HTML.
 *
 * @since 2.7.0
 * @since 5.3.0 Added the `$echo` parameter and a return value.
 *
 * @see get_post_states()
 *
 * @param WP_Post $post The post to retrieve states for.
 * @param bool    $echo Optional. Whether to echo the post states as an HTML string. Default true.
 * @return string Post states string.
 */
function _post_states($post, $echo = true)
{
    $post_states = get_post_states($post);
    $post_states_string = '';
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        $post_states_string .= ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            $post_states_string .= "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
    if ($echo) {
        echo $post_states_string;
    }
    return $post_states_string;
}

WordPress Version: 5.1

/**
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    if (intval(get_option('wp_page_for_privacy_policy')) === $post->ID) {
        $post_states['page_for_privacy_policy'] = __('Privacy Policy Page');
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param string[] $post_states An array of post display states.
     * @param WP_Post  $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 9.8

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    if (intval(get_option('wp_page_for_privacy_policy')) === $post->ID) {
        $post_states['page_for_privacy_policy'] = __('Privacy Policy Page');
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 9.3

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: .20

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    if (intval(get_option('wp_page_for_privacy_policy')) === $post->ID) {
        $post_states['page_for_privacy_policy'] = __('Privacy Policy Page');
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 9.2

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: .10

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    if (intval(get_option('wp_page_for_privacy_policy')) === $post->ID) {
        $post_states['page_for_privacy_policy'] = __('Privacy Policy Page');
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.9

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' === $post->post_status) {
        if (get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
            $post_states[] = __('Customization Draft');
        } elseif ('draft' !== $post_status) {
            $post_states['draft'] = __('Draft');
        }
    } elseif ('trash' === $post->post_status && get_post_meta($post->ID, '_customize_changeset_uuid', true)) {
        $post_states[] = __('Customization Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.8

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     * @since 3.6.0 Added the `$post` parameter.
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.6

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filters the default post display states used in the posts list table.
     *
     * @since 2.8.0
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.5

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        $post_states['pending'] = _x('Pending', 'post status');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filter the default post display states used in the posts list table.
     *
     * @since 2.8.0
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.4

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        /* translators: post state */
        $post_states['pending'] = _x('Pending', 'post state');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if ('page' === get_option('show_on_front')) {
        if (intval(get_option('page_on_front')) === $post->ID) {
            $post_states['page_on_front'] = __('Front Page');
        }
        if (intval(get_option('page_for_posts')) === $post->ID) {
            $post_states['page_for_posts'] = __('Posts Page');
        }
    }
    /**
     * Filter the default post display states used in the posts list table.
     *
     * @since 2.8.0
     *
     * @param array   $post_states An array of post display states.
     * @param WP_Post $post        The current post object.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' &mdash; ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.3

/**
 *
 * @param WP_Post $post
 */
function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        /* translators: post state */
        $post_states['pending'] = _x('Pending', 'post state');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if ('future' === $post->post_status) {
        $post_states['scheduled'] = __('Scheduled');
    }
    if (get_option('page_on_front') == $post->ID) {
        $post_states['page_on_front'] = __('Front Page');
    }
    if (get_option('page_for_posts') == $post->ID) {
        $post_states['page_for_posts'] = __('Posts Page');
    }
    /**
     * Filter the default post display states used in the posts list table.
     *
     * @since 2.8.0
     *
     * @param array $post_states An array of post display states.
     * @param int   $post        The post ID.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' - ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 4.2

function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        /* translators: post state */
        $post_states['pending'] = _x('Pending', 'post state');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    if (get_option('page_on_front') == $post->ID) {
        $post_states['page_on_front'] = __('Front Page');
    }
    if (get_option('page_for_posts') == $post->ID) {
        $post_states['page_for_posts'] = __('Posts Page');
    }
    /**
     * Filter the default post display states used in the posts list table.
     *
     * @since 2.8.0
     *
     * @param array $post_states An array of post display states.
     * @param int   $post        The post ID.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' - ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 3.9

function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        /* translators: post state */
        $post_states['pending'] = _x('Pending', 'post state');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    /**
     * Filter the default post display states used in the Posts list table.
     *
     * @since 2.8.0
     *
     * @param array $post_states An array of post display states. Values include 'Password protected',
     *                           'Private', 'Draft', 'Pending', and 'Sticky'.
     * @param int   $post        The post ID.
     */
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' - ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}

WordPress Version: 3.7

function _post_states($post)
{
    $post_states = array();
    if (isset($_REQUEST['post_status'])) {
        $post_status = $_REQUEST['post_status'];
    } else {
        $post_status = '';
    }
    if (!empty($post->post_password)) {
        $post_states['protected'] = __('Password protected');
    }
    if ('private' == $post->post_status && 'private' != $post_status) {
        $post_states['private'] = __('Private');
    }
    if ('draft' == $post->post_status && 'draft' != $post_status) {
        $post_states['draft'] = __('Draft');
    }
    if ('pending' == $post->post_status && 'pending' != $post_status) {
        /* translators: post state */
        $post_states['pending'] = _x('Pending', 'post state');
    }
    if (is_sticky($post->ID)) {
        $post_states['sticky'] = __('Sticky');
    }
    $post_states = apply_filters('display_post_states', $post_states, $post);
    if (!empty($post_states)) {
        $state_count = count($post_states);
        $i = 0;
        echo ' - ';
        foreach ($post_states as $state) {
            ++$i;
            ($i == $state_count) ? $sep = '' : $sep = ', ';
            echo "<span class='post-state'>{$state}{$sep}</span>";
        }
    }
}