is_post_status_viewable() WordPress Function
The is_post_status_viewable() function allows you to check if a post is viewable by the current user. This is useful for restricting access to certain content.
is_post_status_viewable( string|stdClass $post_status ) #
Determine whether a post status is considered “viewable”.
Description
For built-in post statuses such as publish and private, the ‘public’ value will be evaluated. For all others, the ‘publicly_queryable’ value will be used.
Parameters
- $post_status
(string|stdClass)(Required)Post status name or object.
Return
(bool) Whether the post status should be considered viewable.
Source
File: wp-includes/post.php
function is_post_status_viewable( $post_status ) { if ( is_scalar( $post_status ) ) { $post_status = get_post_status_object( $post_status ); if ( ! $post_status ) { return false; } } if ( ! is_object( $post_status ) || $post_status->internal || $post_status->protected ) { return false; } $is_viewable = $post_status->publicly_queryable || ( $post_status->_builtin && $post_status->public ); /** * Filters whether a post status is considered "viewable". * * The returned filtered value must be a boolean type to ensure * `is_post_status_viewable()` only returns a boolean. This strictness * is by design to maintain backwards-compatibility and guard against * potential type errors in PHP 8.1+. Non-boolean values (even falsey * and truthy values) will result in the function returning false. * * @since 5.9.0 * * @param bool $is_viewable Whether the post status is "viewable" (strict type). * @param stdClass $post_status Post status object. */ return true === apply_filters( 'is_post_status_viewable', $is_viewable, $post_status ); }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
5.9.0 | Added is_post_status_viewable hook to filter the result. |
5.7.0 | Introduced. |