
記事投稿画面のナビゲーションボタンに下書き状態の時・記事を公開している時。
公開状態の有無で違ったボタンを設置したいな~と思った時に、どうやって今下書きなのか?記事を既に公開しているのか?判定すれば良いのか分からなかったので、その時に調べた事を紹介します。
まぁ公式サイトを見れば一発で探せたんですけどね(^^;
get_post_status()
WordPressの定義関数にget_post_status()が存在します。
ここに記事IDを放り投げてあげれば、その記事IDの公開ステータスを返してくれます。
(string | boolean) get_post_status([integer $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以降) |
既に記事を公開済み
ユーザーの付与された権限では記事公開が出来ず(権限は寄稿者)
上位権限の方に公開の承認を待っている状態の記事です。
そのまま名前の通り下書き状態を指します。
リビジョンと勘違いされがちですが、autoという名前がある通り自動で下書き保存するものです。これは新規投稿画面を開いただけで勝手にDBへと新規追加され、その投稿画面にて一度も保存されないままページを閉じたり遷移した場合に残るものです。(管理画面では見えません)
※自動下書きは7日経てば自動的に次回の新規投稿時に削除されるので普通に使っている時に気にすることは無いと思います。
未来の時間に公開設定をしている予約投稿です。
購読者などユーザーがあなたのサイトにログインをしていないと見れない記事の事です。
リビジョン。記事を編集中に自動的に保存される記事のことです。これは記事を書いている人ならば自動で増えていくので見たことがある人も多いでしょう。
ゴミ箱。記事を削除した際には完全に削除されず、一旦ゴミ箱という場所に移動します。そこで更に削除することにより完全に記事が削除されます。
使う時の使用例
返り値 | 説明 |
---|---|
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日)
この記事へのコメントはありません。