The get_available_post_statuses() WordPress PHP function returns all the possible statuses for a post type.
Usage
get_available_post_statuses($type);
Custom Example
$statuses = get_available_post_statuses('post');
print_r($statuses);
Output
Array
(
[0] => publish
[1] => future
[2] => draft
[3] => pending
[4] => private
[5] => trash
[6] => auto-draft
[7] => inherit
)
Parameters
$type(string) Optional: The post_type you want the statuses for. Default is ‘post’.
More information
See WordPress Developer Resources: get_available_post_statuses()
Examples
Display All Post Statuses for Custom Post Type
This example retrieves all post statuses for a custom post type named “events”.
$statuses = get_available_post_statuses('events');
foreach($statuses as $status) {
echo $status . '<br>';
}
Check if a Specific Status is Available for a Post Type
This example checks if the ‘draft’ status is available for the ‘post’ post type.
$statuses = get_available_post_statuses('post');
if(in_array('draft', $statuses)) {
echo "Draft status is available.";
} else {
echo "Draft status is not available.";
}
Count the Number of Post Statuses for a Post Type
This example counts the number of available post statuses for the ‘page’ post type.
$statuses = get_available_post_statuses('page');
$status_count = count($statuses);
echo "There are {$status_count} post statuses available for 'page' post type.";
Add a Prefix to Each Post Status
This example adds a prefix “Status: ” to each post status for the ‘post’ post type and displays them.
$statuses = get_available_post_statuses('post');
foreach($statuses as $status) {
echo "Status: {$status}" . '<br>';
}
Convert Post Statuses to a List
This example converts the post statuses for the ‘post’ post type into an HTML list.
$statuses = get_available_post_statuses('post');
echo '<ul>';
foreach($statuses as $status) {
echo "<li>{$status}</li>";
}
echo '</ul>';