投稿ステータス


WordPress の投稿には、いくつかのステータスのうち 1 つを設定できます。特定の投稿のステータスによって、WordPress がその投稿をどのように処理するかが決まります。たとえば、誰でも閲覧できる公開済みの投稿には publish ステータスが割り当てられ、下書きには draft ステータスが割り当てられます。ステータスは wp_posts テーブルの post_status フィールドに保存されます。

WordPress には、使用できる 8 つの組み込みステータスが用意されています。WordPress 3.0 では、独自のカスタム投稿ステータスを追加し、さまざまな方法で使用できる機能が導入されました。

ワークフロー

WordPress には、ウェブサイトに送信されたコンテンツを公開前にレビューできるよう、一部のユーザー(権限グループと権限に基づく)に権限を与える組み込み機能があります。これは一般に “ワークフロー” と呼ばれます。WordPress のワークフロー機能では、投稿の現在のワークフロープロセスのどの段階にあるかを判断するために、投稿の post_status フィールドの値を使用します。

ほとんどのユーザーは、少なくとも次の 2 つのワークフロー状態にすでに慣れています。

  • 公開され、誰でも(ログアウト中のユーザーを含む)閲覧できる投稿には、 publish ステータスが付与されます。
  • まだ公開されていない下書きには、 draft ステータスが割り当てられます。

内部的には、“公開” ボタンをクリックすると WordPress は投稿ステータスを publish に設定し、“下書きとして保存” ボタンをクリックすると投稿ステータスを draft に設定します。同様に、ウェブサイトに edit_posts 権限は付与されているものの、 publish_posts 権限が付与されていないユーザーがいる場合、それらのユーザーが新しい投稿を書き始めると、WordPress は “公開” ボタンの代わりに “レビュー待ちとして送信” ボタンを表示します。同様に、そのボタンを押すと、WordPress はそのユーザーが作成した投稿に pending ステータスを割り当てます。

投稿のステータスは、指定されたステータスを割り当てるために必要な権限を持つユーザーであれば、管理画面および新規投稿を追加画面でも設定できます。内部的には、これらの投稿はすべて同じ場所(wp_posts テーブル)に保存され、post_status という列によって区別されます。

デフォルトのステータス

WordPress がデフォルトで使用する主要な投稿ステータスは 8 つあります。

公開

誰でも閲覧できます。(publish)

予約公開

将来の日付に公開されるよう予約されています。(future)

下書き

適切なユーザー権限グループを持つユーザーが閲覧できる未完成の投稿です。(draft)

レビュー待ち

publish_posts 権限を持つユーザー(通常は 編集者権限グループを割り当てられたユーザー)が公開するのを待っています。(pending)

非公開

管理者レベルの WordPress ユーザーのみ閲覧できます。(private)

ゴミ箱

ゴミ箱内の投稿には trash ステータスが割り当てられます。(trash)

自動保存

編集中に WordPress が自動的に保存するリビジョンです。(auto-draft)

継承

添付ファイルリビジョンなどの子投稿で使用され、親投稿から実際のステータスを判断します。(inherit)

カスタムステータス

注意:

この関数は、登録された投稿ステータスを管理画面に追加するものではありません。この機能は今後の開発課題となっています。詳しくはTrac チケット #12706を参照してください。

このパラメーターを追加するには、アクションフック post_submitbox_misc_actions の使用を検討してください。

カスタムステータスとは、ユーザーが定義する投稿ステータスです。

WordPress にカスタムステータスを追加するには、register_post_status() 関数を使用します。この関数を使うと、投稿ステータスと、WordPress 内での動作を定義できます。

ここでは、“Unread” というカスタム投稿ステータスを追加する基本的な例を示します。

function custom_post_status(){
	register_post_status( 'unread', array(
		'label'                     => _x( 'Unread', 'post' ),
		'public'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Unread (%s)', 'Unread (%s)' ),
	) );
}
add_action( 'init', 'custom_post_status' );

リソース

関連項目

コードドキュメント

  • 関数: get_post_status() – 投稿 ID に基づいて投稿ステータスを取得します。