The is_post_type_viewable() WordPress PHP function determines whether a post type is considered “viewable”.
Usage
$is_viewable = is_post_type_viewable( $post_type );
Example:
Input:
is_post_type_viewable('post');
Output:
true
Parameters
$post_type (string|WP_Post_Type)– Required. Post type name or object.
More information
See WordPress Developer Resources: is_post_type_viewable
Examples
Check if a built-in post type is viewable
This example checks if the built-in ‘post’ post type is viewable.
$is_post_viewable = is_post_type_viewable('post');
echo $is_post_viewable; // Output: true
Check if a custom post type is viewable
This example checks if a custom post type ‘portfolio’ is viewable.
$is_portfolio_viewable = is_post_type_viewable('portfolio');
echo $is_portfolio_viewable; // Output depends on 'publicly_queryable' value
Using ‘is_post_type_viewable()’ in a conditional statement
This example displays a message depending on whether a post type is viewable.
if (is_post_type_viewable('page')) {
echo 'Page post type is viewable';
} else {
echo 'Page post type is not viewable';
}
Checking multiple post types
This example checks multiple post types and echoes their viewable status.
$post_types = array('post', 'page', 'portfolio');
foreach ($post_types as $post_type) {
$is_viewable = is_post_type_viewable($post_type);
echo ucfirst($post_type) . ' is ' . ($is_viewable ? 'viewable' : 'not viewable') . '.';
}
Hide a custom post type using ‘is_post_type_viewable’ filter
This example hides a custom post type called ‘sample_post_type’ using the ‘is_post_type_viewable’ filter.
add_filter('is_post_type_viewable', 'hide_sample_post_type', 10, 2);
function hide_sample_post_type($is_viewable, $post_type) {
if (false == $is_viewable || 'sample_post_type' === $post_type->name) {
return false;
}
return true;
}