カスタマイズ 2023.12.15

WordPressの独自の投稿ステータスをプラグインを使わずに追加する方法

この記事を書いた人

株式会社e2e wp.geek編集部

WordPressサイト制作サービス「wp.make」やWordPress保守・運用サービス「wp.support」などを展開する株式会社e2eの情報発信チームです。お客様の課題解決に役立つ、WordPressの最新情報をお届けいたします。

はじめに

以前、プラグインなしで独自の投稿ステータスを追加したことがあったので、その方法をご紹介します。

カスタム投稿ステータスを利用する方法の 1 つにプラグイン[1] [2]がありますが、
本記事では プラグインを使わずに、独自の投稿ステータスを作成する方法 を紹介します。

なお、本記事で説明する投稿ページでのエディタ操作及びカスタマイズは Classic Editor になるため、ご注意ください。

投稿ステータスの定義

初めに、投稿ステータスについて説明します。

投稿ステータスの種類

WordPress において、デフォルトで使用される投稿ステータスは、「公開」や「非公開」、「予約済み」等 8 つあります。[3]

これらの投稿ステータスは『src/wp-includes/post.php (version 6.4)』 の create_initial_post_typesで定義されています。[4]

以下、投稿ステータスが定義されている箇所の抜粋です。

register_post_status

先ほどの投稿ステータスは register_post_status で定義されています。[5]

パラメータは以下のように設定します。

  1. 第一引数にカスタム投稿ステータスの名前
  2. 第二引数にカスタム投稿ステータスの設定配列

register_post_status を抜粋したものが以下になります。

『register_post_status』のパラメータ設定配列について、以下のテーブルにまとめました。

配列のキー 説明 デフォルト値
label 一覧表示等の名前 『$post_status』の値
label_count 一覧の記事数 false
exclude_from_search 検索結果に表示させるか 『$internal』の値
_builtin 組み込みのステータスであるか false
public フロントエンドに表示させるかどうか false
internal バックエンドでしか利用しないか false
protected 記事を保護させるか false
private 記事を非公開にするかどうか false
publicly_queryable 公開クエリを可能にさせるかどうか 『$public』の値
show_in_admin_all_list 一覧の「すべて」に集計させるかどうか 『$internal』と反対の値
show_in_admin_status_list 一覧に表示させるかどうか 『$internal』と反対の値
date_floating 投稿作成日を変更させるかどうか false

カスタム投稿ステータスの追加

以上、WordPress のリファレンスとデフォルトの投稿ステータスのパラメータ設定を参考にしながら、
独自のカスタム投稿ステータスを作成、追加していきます。 これ以降のソースコードを 『functions.php』 に記述してください。

以下のソースコードのパラメータ設定を適宜変えて使用してください。

追加した投稿ステータスはグローバル変数の 『$wp_post_statues』 に格納されます。

実際にカスタム投稿ステータスがあるか、テーマディレクトリの 『index.php』等に以下のソースコードを記載して確認してみてください。
(『functions.php』 で『$wp_post_statues』を呼び出した場合、デフォルトの投稿ステータスしか確認が出来ませんでした。)

編集画面で選択する方法

カスタム投稿ステータスを定義しただけでは利用することは出来ません。

次に、編集画面等でカスタム投稿ステータスを選択できるようにします。[6]

投稿記事の投稿ステータスを選択する箇所は 2 箇所あります。

  • 投稿の編集画面上の公開メタボックス [7]
  • 管理画面上の投稿一覧にあるクイック編集[8]

WordPress のエディタには Classic Editor(旧エディタ)と Gutenberg(ブロックエディタ)があり、カスタマイズもそれぞれ異なります。

投稿ステータスの追加方法は様々ですが、本記事では Classic Editor について、該当箇所のアクションフックに JavaScript を追加して、
カスタム投稿ステータスを選択できるようにします。

Classic Editor での公開メタボックス

以下のソースコードで編集画面での選択を出来るようにしました。

記事の編集画面で次のように反映されました。

一覧画面ではこのように表示されました。(パラメータ設定で「すべて」に集計されないようにしました。)

クイック編集画面

以下のソースコードで一覧画面での選択を出来るようにしました。

記事の一覧で編集できるクイック編集で以下のように反映されました。

セレクトボックス-ドロップダウン

投稿記事の公開状態をリストテーブルから選択し、カスタム投稿ステータスに変更後に、
カスタム投稿ステータスがリストテーブルに表示されるようにします。[9]

編集画面で以下のように反映されます。

まとめ

Classic Editor でのカスタム投稿ステータス

私がカスタム投稿ステータスを利用できるようにする方法を紹介しました。

改めて、カスタム投稿ステータスを追加する手順を紹介すると、以下になります

  1. create_initial_post_types で定義をする。
  2. アクションフックで、記事編集画面と一覧画面でカスタム投稿ステータスを選択できるようにする。
  3. フィルターフックで、選択後の切り換え表示でカスタム投稿ステータスが表示されるようにする。

次回は Gutenberg でのステータス追加について紹介します。

参考リンク

  1. プラグイン: PublishPress
  2. プラグイン: EditFlow
  3. Post Status – Documentation – WordPress.org
  4. wordpress-develop/src/wp-includes/post.php at 6.4 · WordPress/wordpress-develop
  5. register_post_status() | Function | WordPress Developer Resources
  6. /src/wp-admin/includes/meta-boxes.php at 6.3 · WordPress/wordpress-develop
  7. | フック | WordPress 開発者リソース
  8. admin_print_footer_scripts | フック | WordPress 開発者リソース
  9. get_post_states() | Function | WordPress Developer Resources

WordPressサイト制作・カスタマイズなら「wp.make」にお任せ!

WordPressでのサイト制作やリニューアルを検討する時、以下のようなお悩みはありませんか?

  • WordPressに詳しい制作会社に依頼したいが、どこがいいかわからない…
  • セキュリティ対策をしっかりしたいが、社内にノウハウがないのでプロに任せたい…
  • WordPressに最適なサーバーの選定や構築から依頼したい…
  • SEO対策や高速化も考慮したサイト構築を行なってほしい…
  • 制作後の保守・運用についてもサポートしてほしい…
  • 今のサイトを簡単に運用できるようにしてほしい…

「wp.make」は、WordPressのプロフェッショナル集団によるWordPressサイト制作・カスタマイズサービスです。
サイトの制作だけでなく、WordPressに最適なサーバーの選定や構築といったインフラ面の支援から、SEO対策や表示スピードの高速化、高度なセキュリティ対策や制作後の保守・運用サポートまで、WordPressに関わることならあらゆるお悩みを解消いたします。

既存のお客さまからも
「コミュニケーションが取りやすく、クオリティが高い」
「WordPressのプロとして信頼感がある」
と大変ご好評をいただいています。

WordPressサイトの制作・カスタマイズをご検討されているなら、ぜひ以下からお気軽にご相談ください。

>> wp.makeに無料相談する

WordPress開発・カスタマイズなら 『wp.make』

wp.make資料

全案件WordPressのみ!
株式会社e2eの『wp.make』はWordPress専門のWeb制作サービスです。

WordPress案件だけを扱っているから、技術・ノウハウ・対応力が圧倒的!

【WordPressサイト制作でよくあるお悩み】
・運用シーンが想定されておらず、更新しづらかった…
・打ち合わせで専門用語が多くてわかりづらい…
・制作後の保守には対応してくれなかった…


こんな事態になる前に、ぜひ一度、ご相談ください!
WordPressサイトを作るなら、一番WordPressに詳しいところへ!