引入额外的功能来检查一篇文章在 WordPress 5.7 中是否公开可见

引入额外的功能来检查一篇文章在 WordPress 5.7 中是否公开可见

引入额外的功能来检查一篇文章在 WordPress 5.7 中是否公开可见

WordPress 5.7 引入了两个额外的功能来检查一篇文章是否公开可见。

以前,is_post_type_viewable() 函数已经可用来确定在注册 post 类型时,通过 publicly_queryable 设置匿名用户是否可以看到一个 post 类型。但是,仅确定特定的帖子是否可见是不够的,因为这个函数只检查一般的帖子类型设置。

这就是为什么 WordPress 5.7 引入了 is_post_status_viewable() 函数,它允许开发人员确定一个 post 状态是否公开可见。内部状态和受保护状态永远不会被认为是可见的。对于内置的 posts 状态,public 属性被选中,对于自定义状态,publicly_queryable 属性被选中。

这个函数接受一个参数:

$post_status: post 状态名或对象。必选参数。

代码示例:

<?php
global $post;
$current_post_status = get_post_status( $post );
if ( is_post_status_viewable( $current_post_status ) ) {
    echo 'This post uses a public post status';
} else {
    echo 'This post uses a non public post status';
}

请注意,密码保护的帖子被认为是公开的,而私密帖子则不是。

WordPress 5.7 还引入了 is_post_publicly_viewable() 来确定一个单独的文章是否可以被登出的用户查看。如果 is_post_status_viewable()is_post_type_viewable() 对 post 的属性都返回 true,则认为帖子是可见的。

这个函数接受一个参数:

$post:post ID 或 post 对象。可选参数。默认情况下,它传递全局 $post 对象。

代码示例:

<?php
if ( is_post_publicly_viewable() ) {
    echo 'This post is publicly viewable';
} else {
    echo 'This post is not publicly viewable';
}

此外,如果将未注册的 post 类型传递给函数,is_post_type_viewable() 函数被修改为返回 false,以避免试图访问非对象的属性。