The is_post_publicly_viewable() WordPress PHP function determines whether a post is publicly viewable.
Usage
$is_viewable = is_post_publicly_viewable($post);
Input: $post (Post ID or post object, optional)
Output: true if the post is viewable, false otherwise
Parameters
$post(int|WP_Post|null, optional): Post ID or post object. Defaults to global$post. Default value:null
More information
See WordPress Developer Resources: is_post_publicly_viewable()
Examples
Check if the current post is publicly viewable
$is_viewable = is_post_publicly_viewable(); // Defaults to the current post
if ($is_viewable) {
echo "This post is publicly viewable.";
} else {
echo "This post is not publicly viewable.";
}
Check if a specific post is publicly viewable by ID
$post_id = 42;
$is_viewable = is_post_publicly_viewable($post_id);
if ($is_viewable) {
echo "Post ID $post_id is publicly viewable.";
} else {
echo "Post ID $post_id is not publicly viewable.";
}
Check if a specific post is publicly viewable using a WP_Post object
$post = get_post(42);
$is_viewable = is_post_publicly_viewable($post);
if ($is_viewable) {
echo "Post ID {$post->ID} is publicly viewable.";
} else {
echo "Post ID {$post->ID} is not publicly viewable.";
}
Display a list of publicly viewable posts
$posts = get_posts();
foreach ($posts as $post) {
if (is_post_publicly_viewable($post)) {
echo "<a href='" . get_permalink($post) . "'>" . get_the_title($post) . "</a><br>";
}
}
Display the viewable status of all posts in the loop
while (have_posts()) {
the_post();
if (is_post_publicly_viewable()) {
echo "Post ID " . get_the_ID() . " is publicly viewable.<br>";
} else {
echo "Post ID " . get_the_ID() . " is not publicly viewable.<br>";
}
}