今回はfunctions.phpを使ってのWordPress管理画面のカスタマイズ方法備忘録。
異動によりweb部門も兼務する事になって早4ヶ月。
お陰様で、途中から俺がメインで開発した某大手組織の新HPがカットオーバーになりました。
デザインは既に完成していて、CSSコーティング、メールマガジンの設定、スマホサイトなどをメインに仕事したんですが、俺が苦労したのは閲覧者には見えない裏の部分でした。
それは、WordPress管理画面のカスタマイズです。
WordPressはユーザーを権限別に分けて機能を制限する事が出来ます。
管理者、編集者、投稿者、寄稿者、購読者の5種類で、何でも出来る管理者から何にも出来ない購読者まで、各段階に渡って機能が制限されていきます。
が、それだけではクライアントの要望には応えきれません。
例えば、寄稿者にも画像をアップロード出来るようにして欲しいとか、ユーザー情報の編集・削除だけが出来る管理者を作って欲しいとか。
ここでは、それらの要望を実装させたfunctions.phpに記述するphpを備忘録として掲載します。
目次
- ログイン画面のWordPressのロゴを変更
- 「WordPressへようこそ!」を非表示にする
- ダッシュボードトップ画面のウィジェットを非表示にする
- アップグレード情報を非表示にする
- 管理画面上部のメニューを非表示にする
- ログアウトを分りやすい所に表示させよう
- 表示オプションとヘルプも非表示にしましょう
- 「WordPress のご利用ありがとうございます」を消す
ログイン画面のWordPressのロゴを変更
ログイン画面にはWordPressのロゴが表示されていますが、このロゴをクライアントのロゴなどに変更すればそれっぽい雰囲気になりますよね。下のコードをfunctions.phpに記述してください。
function custom_login_logo() { echo '<style type="text/css">h1 a { background: url('画像のURL') no-repeat center center !important; }</style>'; } add_action('login_head', 'custom_login_logo');
サイズは274×63なので、同じ大きさで作成すればそのままロゴを差し替えることが出来ます。
ちなみに、WordPressのロゴををクリックするとWordPressの公式サイトに飛びますが、そのリンク先も変更する事が出来ます。しかし、その記述はWordPressをアップグレードすると上書きされてしまうので省略しました。
「WordPressへようこそ!」を非表示にする
ダッシュボードには「WordPressへようこそ!」と言うメッセージが表示されますが、ブログを投稿するだけのクライアントさんには何の関係も無い話ですので消しましょう。
下の一行を追加するだけです。
remove_action( 'welcome_panel', 'wp_welcome_panel' );
ダッシュボードトップ画面のウィジェットを非表示にする
ログイン後に表示されるダッシュボードトップ画面。
そこには最近の情報や最近のコメントなどのウィジェットが表示されています。
これもクライアントさんには関係ないだけではなく、プラグインなど弄って欲しくない情報も含まれています。
消しましょう。
function example_remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); // 現在の状況(概要) unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); // 最近のコメント unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); // 被リンク unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); // プラグイン unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); // クイック投稿 unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); // 最近の下書き unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); // WordPressブログ unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); // WordPressフォーラム } add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets');
アップグレード情報を非表示にする
新しいバージョンのWordPressがリリースされると、ダッシュボードに更新を促すメッセージが表示されます。
実際にアップグレードを出来るのは管理者のみですが、それ以下の権限者には「アップグレード出来るから管理者に連絡してね」とメッセージが表示されてしまうんですね。
慣れていない寄稿者にこんなメッセージが出たら「?」ですよね。
消しましょう。
if (!current_user_can('administrator')) { add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); }
条件分岐について
1行目のif (!current_user_can(‘administrator’))で「管理者以外がログインした時のみ」と言う条件分岐をしてあります。
頭に「!」を付けると「この条件以外では」となるんです。
なぜ、管理者には更新情報を表示させるかというと、この表示を消してしまうとwordpressを管理画面からアップグレード出来なくなってしまうんです。
administratorは管理者の事で、他の権限者にしたい時はadministratorを下の様に変えて下さい。
なお、条件分岐が必要ない場合は、1行目の条件分岐と3行目の「}」を消せばOKです。
- administrator(管理者)
- editor(編集者)
- author(投稿者)
- contributor(寄稿者)
- subscriber(購読者)
if (!current_user_can(‘administrator’))の「!」を取れば「管理者がログインした時は」になります。
if (current_user_can('administrator')) {
ちなみに、複数の権限者で指定したい場合は条件分岐をこんな感じに記述します。
if (current_user_can('administrator') || current_user_can('editor')) {
管理画面上部のメニューを非表示にする
管理画面の上部にはWrordPressロゴ、サイトへのリンク、更新情報、コメントなどが表示されています。
これも邪魔なので消しましょう。
add_action( 'wp_before_admin_bar_render', 'my_wp_before_admin_bar_render' ); function my_wp_before_admin_bar_render() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); // wordpressロゴ $wp_admin_bar->remove_menu('site-name'); // サイト名 $wp_admin_bar->remove_menu('updates'); // 更新 $wp_admin_bar->remove_menu('comments'); // コメント $wp_admin_bar->remove_menu('new-content'); // 新規 $wp_admin_bar->remove_menu('my-account'); // マイアカウント }
全部消しちゃうと余りにも寂しいので、俺は下の様に記述しました。
add_action( 'wp_before_admin_bar_render', 'my_wp_before_admin_bar_render' ); function my_wp_before_admin_bar_render() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); // wordpressロゴ $wp_admin_bar->remove_menu('updates'); // 更新 $wp_admin_bar->remove_menu('comments'); // コメント $wp_admin_bar->remove_menu('new-content'); // 新規 $wp_admin_bar->remove_menu('user-info'); // マイアカウント内「プロフィール」 $wp_admin_bar->remove_menu('edit-profile'); // マイアカウント内「プロフィールを編集」 }
8行目、9行目の「user-info」「edit-profile」は、右上のユーザー名の中にある「プロフィール」と「プロフィールを編集」です。これをクリックされちゃうとユーザー情報の変更画面に飛んでしまうので消したい、けど「my-account」で右上全部を消しちゃうと、現在ログインされているユーザーのユーザー名が表示されなくなってしまうし、その中にあるログアウトボタンも非表示になってしまいます。
そんな訳で、マイアカウント自体は表示させ、その中の「user-info」「edit-profile」を非表示設定しました。
ログアウトを分りやすい所に表示させよう
function add_new_item_in_admin_bar() { global $wp_admin_bar; $wp_admin_bar->add_menu(array( 'id' => 'new_item_in_admin_bar', 'title' => __('ログアウト'), 'href' => wp_logout_url() )); } add_action('wp_before_admin_bar_render', 'add_new_item_in_admin_bar');
上記の様にWordPressのログアウトボタンはマイアカウントの中にあります。
分りにくいので、一目で分るように左上にでも表示させましょうか。
親切設計って奴ですね。
これでどこをクリックすればログアウトされるか一目瞭然ですね。
表示オプションとヘルプも非表示にしましょう
管理画面右上には表示オプションとヘルプが表示されています。
これも寄稿者には必要ないので消しましょう。
function my_admin_head(){ echo '<style type="text/css">#contextual-help-link-wrap{display:none;}</style>'; echo '<style type="text/css">#screen-options-link-wrap{display:none;}</style>'; } add_action('admin_head', 'my_admin_head');
「WordPress のご利用ありがとうございます」を消す
管理画面のフッターには「WordPress のご利用ありがとうございます」と書いてあります。
消しましょう。
function custom_admin_footer() { echo ' '; } add_filter('admin_footer_text', 'custom_admin_footer');
今回はココまで
ぶっちゃけfunctions.phpに書かなくてもプラグインで出来るんです。
俺はphpが苦手なので、勉強になるかなと思ってfunctions.phpに書くことにしたんです。
同じ様に管理画面のカスタマイズをしたいのであれば、用途に応じたプラグインがないか探すことから始めた方が良いかもしれません。
本当は管理画面の左サイドメニューのカスタマイズも書こうと思ったけど、思いのほか長くなってしまったので別の記事として書きますね。
追記:WordPress管理画面の左サイドバーメニューをfunctions.phpで非表示設定する方法を書きました。
COMMENTS:6 COMMENTS
CATEGORY:WORDPRESSTAGS:wordpress