哪种方法更好地获得帖子的状态?

时间:2019-03-09 作者:samjco

Which is the better way to get the current status of a post and why?

答:

$post_id = get_the_ID(); //999
$current_post_status = get_post_status($post_id);
echo $current_post_status; //publish
B:

$current_post_status = get_post_status();
echo $current_post_status; //publish
C:

$wp_post = get_post();
$current_post_status = $wp_post->post_status;
echo $current_post_status; //publish
D:

global $post;
$current_post_status = $post->post_status;
echo $current_post_status; //publish

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

他们都没有。

A、 C和D都表示您在一个循环中,并且需要当前帖子的状态。但如果是这样的话,那么它们的第一行都是多余的。如果你想知道“当前帖子”的状态,这就是你所需要的:

$current_post_status = get_post_status();
get_post_status() 呼叫get_post() 在内部,它为您获取当前帖子。因此,没有必要向其提供当前帖子的ID或当前帖子的对象。

如果要获取不是当前帖子的帖子状态,请使用get_post_status() 函数并传递完整的post对象(如果有):

$current_post_status = get_post_status( $post );
否则,请使用函数并传递ID:

$current_post_status = get_post_status( 12 );
您应该更喜欢传递整个post对象,而不仅仅是post IDget_post_status() 函数需要在内部完成将ID转换为post对象本身的工作,如果您已经获得了完整的对象,那么这是浪费时间。

的优点get_post_status() 结束$post->post_status 函数有额外的逻辑来处理附件的状态,这可能是相关的,并且它还通过get_post_status 过滤器,如果您使用的插件以某种方式与帖子状态交互,这可能很重要。

如果一个函数可用于获取帖子的属性,那么这通常比直接访问该属性更好,因为它将对结果应用正确的过滤器。

相关推荐