WordPressは権限によって機能を制限することが可能です。管理者権限はプラグインの導入や削除、WordPressのアップデート、テーマの適用など全ての権限が扱え便利な反面、間違えてアップデートしてしまったり可能性があったり、全部の画面にアクセスできるため管理画面が煩雑になりがちです。
- ログインしたときの画面をシンプルにしたい
- WordPressに慣れていないクライアントに不要な画面へアクセスできないようにしたい
- 間違ってアップデートをしないように制限をかけたい
例えばUser Role Editorプラグインでこのような制限をかけることは可能ですが、プラグインを利用しないでも機能制限を行うことが可能です。
クライアントワークの場合、管理者権限を渡したとしても、通常の記事更新の際のアカウントは編集者権限でログインいただいて、その編集者権限に対して制約をかけるという方法が問題も起きにくく、かつ運用もしやすいのではないでしょうか。
目次
各権限による見え方の違い
管理者権限と編集者権限の見え方の違いを比較します。
まずは全権限のある「管理者権限「でログインしたダッシュボードの見え方。
続いて一つ下の権限である「編集者権限」でログイン。
編集者権限でログインしたときに、サイドバーのメニューがシンプルになっていますね。
- WPコアやプラグイン等のアップデートができない
- 「外観」にアクセスできず、テーマの変更やウィジェット、テーマカスタマイザーやメニュー等の変更ができない
- プラグインの追加変更ができない
- ユーザーの追加や削除ができず、自分のプロフィールしか見られない
- サイトや投稿の設定、また各種プラグインの設定画面である「設定」にアクセスできない
- その他、プラグインで追加されたメニューにアクセスできない
ざっと見てこのような制限がかかっています。
これでも色々と制約がかかっていますが、「もう少し画面をスッキリさせ、機能的に使いたい」という変更をしていきましょう。
使いやすい管理画面とは?
クライアントにとって使いやすい管理画面とは「必要のない余計な情報が表示されていない」「使いたい機能が揃っている」状況かと思います。一つずつみていきます。
ヘッダーの更新情報などを非表示にする
新しいWordPressが公開されると、ヘッダーに「WordPress 4.9.1 が利用可能です ! 今すぐ更新してください。」のような更新情報が表示されますが、これを非表示にします。
同時に、APIによるバージョン確認を行わないようにします。
不要な項目を非表示にする
- ダッシュボードログイン後の画面に表示されている「アクティビティ」「クイックドラフト」「WordPressイベントとニュース」等を非表示にする
- 右上のヘルプを非表示
- 管理バーにある「WordPressシンボルマーク」を非表示(WordPressごめんなさい…)
といったような項目を非表示にすることで、クライアントが使わなそうな機能やリンクなどを非表示にします。
ウィジェットを表示&不要な項目を非表示
サイドバーの「外観」を無効にしつつ、ウィジェット機能のみ有効にしたいケースに対応します。
ドラッグ&ドロップで設定できる箇所やサイドバーのバナー部分など、クライアント側で触れる用に設定します。
※「ヘッダー」項目のみ非表示に設定する方法をご存知の方教えてください!
サンプルコード
前置きが長くなりました。以下のサンプルコードをfunctions.phpへ追加します。バックアップは取っておきましょう。
/* * 管理者以外の管理画面の見せ方をカスタマイズ */ if (!current_user_can('edit_users')){ //ヘッダーの更新情報を非表示&APIバージョン確認を行わない add_filter( 'pre_site_transient_update_core', '__return_zero' ); remove_action( 'wp_version_check', 'wp_version_check' ); remove_action( 'admin_init', '_maybe_update_core' ); //ダッシュボードの不要な項目を非表示 function example_remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); // 被リンク unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); // プラグイン unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']); // アクティビティ unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); // クイック投稿 unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); // WordPressブログ unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); // WordPressフォーラム if (current_user_can('author')){ //投稿者のみ非表示にする unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); // 概要 } } add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets'); //右上のヘルプを非表示 function disable_help_link() { echo '<style type="text/css"> #contextual-help-link-wrap {display: none !important;} </style>'; } add_action('admin_head', 'disable_help_link'); // 管理バーの項目を非表示 function remove_admin_bar_menu( $wp_admin_bar ) { $wp_admin_bar->remove_menu( 'wp-logo' ); // WordPressシンボルマーク } add_action( 'admin_bar_menu', 'remove_admin_bar_menu', 70 ); // ウィジェットを表示&不要な項目を非表示 function customize_theme_caps(){ $role = get_role( 'editor' ); $role->add_cap( 'edit_theme_options' ); remove_menu_page('edit-comments.php'); // コメント remove_menu_page('tools.php'); // ツール remove_submenu_page('themes.php', 'themes.php'); //外観>テーマ global $submenu; unset($submenu['themes.php'][6]); // Customize link remove_submenu_page('themes.php', 'nav-menus.php'); //外観>メニュー remove_submenu_page('themes.php', 'custom-header'); // 外観 -> カスタムヘッダー //remove_menu_page('wpcf7'); //コンタクトフォーム7 //remove_menu_page( 'edit.php?post_type=カスタム投稿名' ); //カスタム投稿の名称を設定 } add_action( 'admin_init', 'customize_theme_caps' ); //カスタマイザーの表示項目を調整 function customize_register_custom_demo( $wp_customize ) { $wp_customize->remove_section('title_tagline'); //サイト基本情報 $wp_customize->remove_section('colors'); //色 $wp_customize->remove_section('header_image'); //ヘッダーメディア remove_action( 'customize_register', array( $wp_customize->nav_menus, 'customize_register' ), 11 ); //メニュー //$wp_customize->remove_panel('widgets'); //ウィジェット $wp_customize->remove_section('static_front_page'); //固定フロントページ $wp_customize->remove_section('custom_css'); //追加CSS } add_action( 'customize_register', 'customize_register_custom_demo' ); }
カスタム投稿やContact Form 7に対応する
もし、特定のカスタム投稿タイプやプラグインのContact form 7を非表示にしたい場合、上記コードの該当箇所を書き換えて下さい。
//remove_menu_page('wpcf7'); //コンタクトフォーム7 //remove_menu_page( 'edit.php?post_type=カスタム投稿名' ); //カスタム投稿の名称を設定 ↓ remove_menu_page('wpcf7'); //コンタクトフォーム7 remove_menu_page( 'edit.php?post_type=カスタム投稿名' ); //カスタム投稿の名称を設定
カスタム投稿名を指定する必要があるため、「カスタム投稿名」にカスタム投稿スラッグ名を書き換えます。
整理したあとの管理画面見え方
かなりスッキリしました!
ダッシュボードは概要のみ、サイドバーは必要最低限、しかしウィジェットにはアクセスできる。
環境に応じて表示非表示を設定していただいて、クライアントワークに活用いただければと思います。