WordPressの3.0だったか、3.1だったか忘れましたが、管理バー(admin bar)というのが採用されました。WordPressにログインしているユーザーの便宜を計るための粋な計らいだったのですが、江戸時代に多くの人が写真を撮られると魂を抜かれると思ったのと同様、大変嫌われました。「WordPress 管理バー 非表示」という検索クエリが飛び交ったことと思います。
なぜWordPressコアに管理バーが採用されたのか?
僕がまだ高校生だった頃、柔道部のくせに美容院に通っていたのですが、美容師(女)との会話で一つの真理に到達しました。僕が自分でいいと思った髪型(機嫌の悪い浅野忠信みたいなヤツ)よりも、美容師(女)が好きな髪型にした方がいい、と。
師曰く「男の子が考えた髪型だったら世界中の女の子が一人もいいと思わない可能性があるけど、少なくとも私が付き合ってもいいと思う髪型だったら、それはないよね」
[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)
というわけで、WordPressに管理バーが採用されたのはある程度の理由があると僕は思うのです。
昨今のWebサービスではアカウント登録があるのは当たり前で、それによってパーソナライズをはかっています。ユーザーの側でも「自分のアカウント関係のことは大体右上にあるなー」というのが感覚的にわかっているんではないでしょうか。WordPressもそうしたトレンドを取り入れつつ管理バーを採用したことと思います。
会員制サービスを運営するにあたって必ず必要になるアカウント周り
さて、普通のブログを運営していて、「コンテンツを作るのは俺だけな! おまえら読者どもはコンテンツをありがたく読むだけだぞ! あ、コメントぐらいはしてもいいからな! ちゃんとバズらせろよ!」という姿勢であれば、パーソナライズとかはいらないと思いますが、熱心な読者にアカウントを発行し、そのアカウントを利用してその読者向きのコンテンツを提供しようと思っている場合、必ずアカウント操作が必要になります。
プロフィールを表示するならプロフィール編集画面が必要になりますし、当然リンクも提供しなければいけません。その他にもそれぞれのユーザーに特化したコンテンツを提供するページが必要になってくるので、そうしたものを丸っとまとめて表示したくなりますね。
その場合、管理バーを非表示にしてスクラッチで作るのではなく、管理バーをカスタマイズした方が楽だと思います。
管理バーを常に表示する
この管理バーなのですが、基本的にはログインしているユーザーにしか表示されません。この「表示されたりされなかったり」が魂を抜かれるのではと思う原因です。最近僕がやっきになってリニューアルしている破滅派では、常に表示するようにしてみました。このやり方は簡単です。
/** * アドミンバーを常に表示 * @return boolean */ function _my_show_admin_bar(){ return true; } add_filter( 'show_admin_bar', '_my_show_admin_bar' , 1000 );
これで常に管理バーが表示されるようになります。trueを返す条件を変えれば色々できます。
- ログインしていても、特定の権限がないと表示しない
- IPアドレスやクッキーを見て、特定の場合だけ表示する
デフォルトでも、ユーザー1人1人が管理バーを表示するかしないかを選べるようにはなっているのですが、そもそも普通のユーザーは自分が始めて見たものを非表示にしたいとか思わないはずなので、出すなら出す、出さないなら出さないで統一した方が親切だと思われます。
管理バーの項目をカスタマイズする
管理バーを出力したのはいいものの、ログインしていない場合はなにも表示されません。これだと困るので、色々調整します。
/** * 管理バーの項目を変更する * @param WP_Admin_Bar $wp_admin_bar */ function _my_adminbar( $wp_admin_bar) { if ( !is_user_logged_in() ){ //ログインしていないユーザー向け //ウェルカムページへのリンクを追加 $wp_admin_bar->add_menu(array( 'id' => 'my-blog-logo', 'title' => 'ようこそ私のブログへ!', 'href' => home_url('/about/') )); //ログインリンク $wp_admin_bar->add_menu( array( 'title' => 'ログイン', 'href' => wp_login_url() ) ); //新規登録リンク $wp_admin_bar->add_menu( array( 'title' => '新規登録', 'href' => preg_replace("/^.*href=\"([^\"]+)\".*$/", "$1", wp_register('', '', false)))); }else{ //ユーザーがログインしていて、投稿権限を持っていたら if(current_user_can('edit_posts')){ $wp_admin_bar->add_menu(array( 'id' => 'dashboard-shotrlink', 'title' => 'ダッシュボード', 'href' => admin_url(), 'parent' => 'user-actions' /* プロフィールのリンクに追加 */ )); } } //WordPressとは?のロゴを削除 $wp_admin_bar->remove_node('wp-logo'); } //adminbarにフック。最後に処理したいので、1,000番目に登録 add_action( 'admin_bar_menu', '_my_adminbar', 1000);
関数書いてみましたが、ちょっと疲れたのでAdmin Bar API changes in 3.3というエントリーを参考にしてください。色々書いてあります。
管理バーの見映えを合わせる
WPerはデザインにこだわる人が多いので、管理バーの許しがたいところに「なんか黒いし、クール」というのがあると思います。日本でクールなのはGacktぐらいなので、これは受け入れがたいでしょう。サイトをクールにするのも一つの手だとは思いますが、いきなり黒い帯をつっこんでも違和感のないサイトは少ないはずなので、せめて色味ぐらいはあわせたいものです。
なので、そのやりかたを紹介……と思ったのですが、基本はCSSだけでなんとかなります。最近はTwitter Bootstlapとかも話題になっているので、「デザインもモジュール化しないとダメなんだな」と思ってるデザイナーも多いことでしょう。管理バーなどは「可変要素が追加され、デザインが統一されている必要のあるパーツ」なので、モジュール的なデザインをするのにうってつけなのではないでしょうか。詳しくはWhat Everybody Ought to Know about the WordPress Admin Bar(WordPressの管理バーについてみんなが知っておくべきこと)というエントリーを参考にしてください。
デザインをあえて変えるということ
WordPressをどう使うかによって判断は色々だと思うのですが、ユーザー登録が自由で投稿も自由なサイトをWordPressで作る場合、管理画面のデザインを必死にカスタマイズするのは考えものだと思います。
破滅派をリニュアールするときは、なるべく管理バーや各種ボタンなどがWordPressデフォルトのものと違和感がないようにはじめっから合わせちゃいました。少なくとも、僕みたいな素人がデザインしたものより、多くの人が熟考を重ねたデザインの方がよいでしょう。カスタマイズするとしても、西川さんのKawaii Adminを使ってCSSだけいじるぐらいにとどめておいた方が無難です。WordPressをフレームワークとして捉えたとき、管理画面をいじる工数は公開画面をいじる工数よりも遥かに高いので、そこらへんのトレードオフをしっかり計算する必要があります。
一般ユーザーを管理画面に入れるべきか否かというのはWordPressをどれだけCGM的に使うかということで判断が分かれると思いますので、あとはお任せします。
ちなみにこのブログでは管理バーを表示していませんが、これは単に管理バーがある前から一生懸命自分で管理バー的なものを実装したら、そのあとすぐに管理バーが実装されたという悲しいボタンのかけちがいによるものです。