独自のステータスを追加する

WordPressの投稿や固定ページには、「公開」「下書き」「レビュー待ち」「非公開」のようなステータスがあります。

WordPress本体には投稿や固定ページにステータスを追加するための register_post_status() という関数が用意されていますが、これを使ってステータスを追加しても

  • 投稿画面のステータスのプルダウンにステータスを追加してくれない (自力でする)
    • そもそもCodexが「This function does NOT add the registered post status to the admin panel. This functionality is pending future development. (この関数は、登録された投稿ステータスを管理画面に追加しません。その機能はまだ開発されていません。)」と言っている
    • がんばって自力で追加しても、「下書きとして保存」ボタンなどの表示調整も自力でする必要がある
  • 投稿一覧のクイック編集にあるステータスのプルダウンにステータスを追加してくれない (自力でする)
  • 特定の投稿タイプにのみステータスを追加するようなことができない (自力でする)

という課題があります。

整合性をしっかり取ってステータスを追加するのは2016年時点ではかなり大変だと思うので、カテゴリーやタグ、カスタムタクソノミーで代用できるならそうしたほうがよいのではと思います。

一例

どういう対応が必要になってくるのか、参考のために一例を記載します。(もしもっと簡単な方法があれば教えて下さい)

例として、「投稿に『公開候補 (candidate)』という公開直前の最終チェック用のステータスを追加する」(レビュー待ちに近い、関係者向けステータス)ケースの対応を行います。この対応のためには、functions.phpに下記のように記載します。

※ このコードはWordPress 4.4 (4.4.2)での確認をしていますが、他のバージョンで上手く動く保証はありません。

結果


(投稿一覧。「公開候補」というステータスが追加されています)


(クイック編集)


(投稿画面。ステータス表示、プルダウン、ボタンが調整されます。ボタンはステータスによって名前が変わりますが、本体側がこの部分を拡張できるように作っていないため、表示が不自然になるときがあります)

公開日が自動でセットされないようにする

下書きやレビュー待ち、自動保存で保存した場合は、公開日が設定されていなければ公開日はセットされないようになっています(その他のステータスでは公開日が設定されていないと自動的に現在日時がセットされます)。独自のステータスでも公開日が自動でセットされないようにしたい場合は、functions.phpに下記も追加します。

その他

更新履歴

  • 2016/08/03 「公開日が自動でセットされないようにする」のコードで、公開日を設定せずに公開ボタンを押した時に公開日が現在日時にならない問題を修正しました。
  • 2016/07/11 「公開日が自動でセットされないようにする」を追加しました。
  • 2016/04/17 「Custom Post Status Creation | WordPress | James Collings」さんを参考に、「すべて」の投稿一覧の際に投稿タイトルの脇に表示されるステータス表示を追加しました。また、WordPress 4.5で確認した上説明やスクリーンショットなどを少し修正しました。
  • 2016/04/11 初版

コメント

内容の誤りなどがありましたら下記からご連絡をお願いします。頂いたコメントは基本的に公開されることはありません(必要な場合は個別に返信させて頂きます)。

CAPTCHA