WordPress の管理画面に簡単なメッセージを表示する
青空文庫に吉川英治の作品が出ているのを見つけて『宮本武蔵』を読み始めた kagata です。1962年没なので、おととしには著作権が切れていたんですね。『三国志』とか、中学生のころにはまったなあ。
今回は、WordPress の管理画面にメッセージを表示する方法を紹介します。ごくシンプルなカスタマイズですが、アイディアしだいでいろんな応用ができそうです。
やりたいこと
WordPress での制作業務で、開発環境と本番環境に同じ仕様の WordPress を構築するようなことはよくあると思います。
このとき、両環境の管理画面はもちろんほとんど同じ見た目です。開発環境だと思って作業していたら本番環境だった、あるいはその逆など、取り違えてしまいそうです。
そこで、管理画面がどちらの環境なのか見分けがつくようにするためにはどうしたらよいか、少し考えました。
そういえば、WordPress の管理画面をいろいろいじっていると、こんなふうにメッセージが表示されるのをよく目にします。
こんな形で、今表示している画面がどちらの環境のものなのかメッセージを表示しておけば、取り違えてしまう心配が少なくなるかもしれません。
ということで、こんなふうな形で好きなメッセージを表示する方法を調べてみました。
管理画面にメッセージを表示するコード
そこでできたのが次のコードです。これを functions.php に追記してやれば、管理画面のすべてのページに同じメッセージが表示されます。
function echo_message() {
echo '<div class="message error"><p>ここは開発環境です。<a href="http://production.example.com">本番環境はこちら</a>。</p></div>';
}
add_action( 'admin_notices','echo_message' );
なお、div.message.error
にはメッセージの左ボーダーが赤くなるスタイルが割り当てられています。異常時のメッセージっぽくなりますね。ここを div.updated
とすると左ボーダーが緑色になり、正常時のメッセージっぽくなります。
ちなみに、開発環境と本番環境の見分けをつけるためにはもう少し工夫が必要かもしれません。functions.php をそのまま本番環境に持ってくると、そこでも「ここは開発環境です」というメッセージが表示されてしまいます。
プラグイン化してしまうのもひとつの方法です。できたプラグインファイルをバージョン管理システムの無視ファイルに登録してしまえば、本番環境にはこのコードを置かずにすみます。あるいは、$_SERVER['SERVER_NAME']
などを見て条件分岐するのもよいでしょう。
マルチサイトに対応させる
ところで、上で「管理画面のすべてのページに」と書きましたが、WordPress のネットワーク機能を有効にしている場合(いわゆるマルチサイト)には注意が必要です。マルチサイト運用時に追加される「ネットワーク管理画面」には、これだけではメッセージが表示されません。
ネットワーク管理画面にも同じメッセージを表示させるには、下のコードの最後の1行を追加すれば Ok です。アクションフックが別なんですね。
function echo_message() {
echo '<div class="message error"><p>ここは開発環境です。<a href="http://production.example.com">本番環境はこちら</a>。</p></div>';
}
add_action( 'admin_notices','echo_message' );
add_action( 'network_admin_notices','echo_message' ); // 追加
まとめと今後の展望(?)
WordPress の管理画面にメッセージを表示する方法をご紹介しました。
今はお決まりのメッセージを出しっぱなしにするだけですが、工夫すればいろんなことに使えるかも?
- ログインしてきたユーザーに、時間帯ごとに「おはよう」「こんにちは」「こんばんは」とあいさつするとか(Web1.0感)
- 会員制サイトを構築して、管理者から特定のユーザーに秘密のメッセージを送れるようにするとか
- 意味があるんだかないんだかわからないようなメッセージを管理画面が突然つぶやきだしたらちょっとこわいとか(謎)