WordPress記事の公開状態・下書き状態などのステータス判定方法

WordPress記事の公開状態・下書き状態などのステータス判定方法 イメージ画像

記事投稿画面のナビゲーションボタンに下書き状態の時・記事を公開している時。

公開状態の有無で違ったボタンを設置したいな~と思った時に、どうやって今下書きなのか?記事を既に公開しているのか?判定すれば良いのか分からなかったので、その時に調べた事を紹介します。

まぁ公式サイトを見れば一発で探せたんですけどね(^^;

get_post_status()

WordPressの定義関数にget_post_status()が存在します。
ここに記事IDを放り投げてあげれば、その記事IDの公開ステータスを返してくれます。

基本(2.0.0以降)
(string | boolean) get_post_status([integer $ID = '']);

指定した ID を持つ投稿の公開ステータスを取得します。添付ファイルの ID を指定した場合は、親投稿の公開ステータスを取得します。

$ID

(integer|WP_Post) (オプション)
投稿 ID または投稿オブジェクト。未指定(空文字)の場合は現在の投稿が対象になります。
初期値:''(空文字)

戻り値

(string|boolean)
指定した ID を持つ投稿がない場合は false を返します。

簡単なサンプル

返り値は文字列となるため == ではなく === を使うと良いでしょう。
投稿がない場合はfalseを返すため、その点には注意。

公開済みか確認
if (get_post_status($post->ID) === 'private') {
    echo '非公開';
} else {
    echo '公開済';
}

戻り値の解説

返り値 説明
publish 公開済み
pending 承認待ち
draft 下書き
auto-draft 新規作成された投稿。まだコンテンツがない。
future 予約済(未来に投稿される)
private 非公開(ログインしていないユーザーから見えない)
inherit リビジョン
trash ゴミ箱にある投稿(2.9.0以降)
publish

既に記事を公開済み

pending

ユーザーの付与された権限では記事公開が出来ず(権限は寄稿者)
上位権限の方に公開の承認を待っている状態の記事です。

draft

そのまま名前の通り下書き状態を指します。

auto-draft

リビジョンと勘違いされがちですが、autoという名前がある通り自動で下書き保存するものです。これは新規投稿画面を開いただけで勝手にDBへと新規追加され、その投稿画面にて一度も保存されないままページを閉じたり遷移した場合に残るものです。(管理画面では見えません)

※自動下書きは7日経てば自動的に次回の新規投稿時に削除されるので普通に使っている時に気にすることは無いと思います。

future

未来の時間に公開設定をしている予約投稿です。

private

購読者などユーザーがあなたのサイトにログインをしていないと見れない記事の事です。

inherit

リビジョン。記事を編集中に自動的に保存される記事のことです。これは記事を書いている人ならば自動で増えていくので見たことがある人も多いでしょう。

trash

ゴミ箱。記事を削除した際には完全に削除されず、一旦ゴミ箱という場所に移動します。そこで更に削除することにより完全に記事が削除されます。

使う時の使用例

返り値 説明
publish 公開済み
pending 承認待ち
draft 下書き
future 予約済(未来に投稿される)
private 非公開(ログインしていないユーザーから見えない)
上記はどこでも使いそうですね。
記事がこの状態の時は〇〇して下さい。
〇〇の文字を表示するなどカスタマイズする上で非常に使用頻度が高いでしょう。
返り値 説明
auto-draft 新規作成された投稿。まだコンテンツがない。
inherit リビジョン
trash ゴミ箱にある投稿(2.9.0以降)

上記はDBの容量を喰うゴミに近いので、一括削除など。
データを整理する際に使用する事があると思います。
基本的には管理画面で行うメンテナンス要素での利用が多いでしょう。

実際の使用例

投稿画面に記事状態で分岐処理
function add_admin_action() {
    if (get_post_status(get_the_ID()) === 'publish') {
        // 公開状態の時の処理
    } else {
        // 下書きや予約投稿・承認前の時の処理
    }
}

add_action('admin_footer-post-new.php', 'add_admin_action');
add_action('admin_footer-post.php', 'add_admin_action');

上記のコードは記事の新規・編集画面の時。
公開ステータスの状態で違った動作を行いたい時に使う例です。

私は上記の方法でナビゲーションボタンを変更したくてやり方を調べたんですよね。
管理画面にボタンやカスタムフィールドを公開ステータスの状態で違った表示を行いたい時は是非参考にして下さい。

関連記事

  1. WordPressのesc_jsの使い方解説、スクリプトのエスケープ処理 アイキャッチ
    WordPressのesc_jsの使い方解説、スクリプトのエスケープ処理
  2. WordPressのwpautop()自動整形でが余計に入るバグ回避方法 アイキャッチ
    WordPressのwpautop()自動整形で</p>が余計に入るバグ回避方法
  3. WordPressのアクションフック「add meta boxes」の使い方説明 アイキャッチ
    WordPressのアクションフック「add_meta_boxes」の使い方説明

PHPラボ オリジナルツール

無料配布中

当サイトの記事装飾は全てWPのオリジナルプラグインで行ってます。
インストールするとコピペで簡単に綺麗な記事が作成可能に♪
現在無料配布中・あなたのサイトも綺麗に装飾しませんか?

画像をクリックで配布ページへ
Citron WP Shortcode

承認後に表示(反映まで最長1日)

この記事へのコメントはありません。

質問・一言残していく