WordPress 5.7 新增的文章相关函数
WordPress 5.7 增加几个文章相关的函数,可能对于主题和插件开发可能会使用比较高,所以下面统一介绍一下:
文章父级相关的模板函数
WordPress 5.7 新增了两个和文章父级相关的函数,一个是判断当前文章是否有父级,一个是直接获取文章父级对象。
get_post_parent
get_post_parent
函数用来获取文章父级的对象,只支持一个参数,文章 ID 或者 WP_Post
对象,默认情况不传递则为全局的 $post
,返回父级的对象,如果不存在则返回 null
。
has_post_parent
has_post_parent
函数用来判断当前文章是否有父级,的参数和 get_post_parent()
一样,它返回 true
如果存在,否则 false
。
下面是一个使用文章父级模板函数的例子:
<?php if ( has_post_parent( get_the_ID() ) ) : ?>
<a href="<?php the_permalink( get_post_parent( get_the_ID() ) ); ?>">
<?php echo esc_html( '返回父级页面:'. get_the_title( get_post_parent( get_the_ID() ) ) ); ?>
</a>
<?php endif; ?>
文章是否公开可见函数
WordPress 5.7 新增了两个额外的函数来判断文章是否公开可见。
我们已有函数 is_post_type_viewable()
可以用来判断文章类型是否公开可见,它是通过判断文章类型对象的 publicly_queryable
的属性来是判断的。但是仅仅判断文章类型公开的属性就来判断文章是公开可见的是不够的。
is_post_status_viewable
所以 WordPress 5.7 就新增了 is_post_status_viewable()
函数,它可以让开发人员用来确定文章状态是否可以公开可见。
比如内部状态(Internal)和受保护状态(protected)就是认为不可见的,其他的状态,WordPress 内置的,我们要查看文章状态对象的 public
属性,自定义状态,则查看 publicly_queryable
属性。
is_post_status_viewable()
只支持一个参数 $post_status
,文章状态名称或者对象,这个参数是必须的。
<?php
global $post;
$current_post_status = get_post_status( $post );
if ( is_post_status_viewable( $current_post_status ) ) {
echo '这篇文章使用了公开的状态';
} else {
echo '这篇文章使用了非公开的状态';
}
特别注意一下,密码保护文章是认为公开可见的,而私密文章则不可见的。
is_post_publicly_viewable
WordPress 5.7 同时还新增了 is_post_publicly_viewable()
函数用来判断文章对于未登录用户是否可见,它的定义是一篇文章公开可见,是文章的相关属性传递给 is_post_status_viewable()
和 is_post_type_viewable()
函数要同时返回 true
。
is_post_publicly_viewable()
函数只支持一个参数 $post
,文章 ID 或者对象,参数可选的,如果不传递则全局的 $post
对象。
<?php
if ( is_post_publicly_viewable() ) {
echo '这篇文章公开可见';
} else {
echo '这篇文章不可见';
}