WordPressで投稿/カスタム投稿タイプ/固定ページのID別でステータス(公開済み・下書きなど)を取得する方法

WordPressで投稿/カスタム投稿タイプ/固定ページのステータスを取得して、条件分岐させたい場合は「get_post_status」という関数を使う方法があります。

ステータスを取得する方法

使い方

Codexにあるコードを引用させていただきますと・・・

<?php get_post_status( $ID ); ?>

という使い方をします。取得できるステータスは以下です。

取得できるステータス

publish公開済み
pendingレビュー待ち
draft下書き
private非公開
future予約投稿
trashゴミ箱に移動した投稿
auto-draft自動下書き保存された投稿(「自動下書き」がpostsテーブルに入ってました)
inheritリビジョン

使えるパラメーター

$ID(オプション)投稿や固定ページのIDを指定できます。カスタム投稿タイプもOK。
$IDが未入力の場合は、現在の投稿(またはカスタム投稿タイプ/固定ページ)のIDが設定されます。

なんとなく使い方を理解できたところで、いくつかサンプルを書きました。

サンプル

「公開済みのステータスかどうか」で条件分岐したい場合

<?php
if( get_post_status() == 'publish' ){ //条件分岐
 //公開済みの場合の処理
} else {
 //公開済みじゃない場合の処理
}
?>

「レビュー待ちのステータスかどうか」で条件分岐したい場合

<?php
if( get_post_status() == 'pending' ){ //条件分岐
 //レビュー待ちの場合の処理
} else {
 //レビュー待ちじゃない場合の処理
}
?>

上記の2つのコードは、取得したステータスによって、処理させたい内容を変更したい場合に使えます。

IDを指定してステータスを取得、表示する場合

ステータスを表示したい固定ページのIDが「2」だったとします。

<?php
echo get_post_status( '2' ); //固定ページのIDが「2」の場合
?>

というようにIDを指定すればOKです。

まとめ

サンプルのコードに書いたように、今表示している投稿のステータスによって出力させたい内容を変更するために使いました。以上、何かのご参考となりましたら幸いです。

著者:bouya Imamura