WordPress管理画面を顧客用にカスタマイズする方法

WordPress管理画面を顧客用にカスタマイズする方法

お客様から依頼を受けてWebサイトを制作する場合、新着情報の投稿など、顧客側でサイト更新を行いたいという要望は多いかと思います。

WordPressで制作したならば、サイト管理画面にログインすることで更新作業が行えるので、それは可能です。管理者(制作側)が、予め顧客のアカウントを追加して、管理権限を制限することによって、不用意にサイト構築内容が変更されてしまうのも防ぐ事ができます。

ただ、顧客ユーザーの中には、管理画面内の項目が多くて、わかり難いと感じる方も居られるようです。そこで、この投稿では“見た目”が顧客にわかり易い管理画面にカスタマイズするための、私が採っている方法を書いておきます。

尚、以下の内容はWordPressバージョン3.3.2/3.4.2で検証したものです。

ログイン画面のカスタマイズ

ロゴを変更する

ロゴを変更する

functions.phpに下記コードを追記。

function custom_login_logo() {
 echo '<style type="text/css">h1 a { background: url('.get_bloginfo('template_directory').'/images/logo-login.gif) 50% 50% no-repeat !important; }</style>';
 }
add_action('login_head', 'custom_login_logo');

予め、テーマのイメージフォルダ内にオリジナルのロゴ画像ファイル(例:logo-login.gif)を格納しておきます。

ロゴのリンク先とリンクタイトルを変更する

wp-login.php(78行目辺)の下記コードを修正。

if ( is_multisite() ) {
 $login_header_url   = network_home_url();
 $login_header_title = $current_site->site_name;
 } else {
 $login_header_url   = __( 'http://wordpress.org/' );
 $login_header_title = __( 'Powered by WordPress' );
}

上記でリンク先として記述されているhttp://wordpress.org/と、リンクタイトルのPowered by WordPressの箇所を、例えば顧客サイトのURLとサイト名に変更します。

管理画面のカスタマイズ

下記のコードはテーマフォルダ内のfunctions.phpに追記します。※テーマにfunctions.phpファイルが無い場合は作成してください。

WordPressバージョンの更新情報を非表示にする

WordPressバージョンの更新情報を非表示にする

functions.phpに下記コードを追記。

// バージョン更新を非表示にする
add_filter('pre_site_transient_update_core', '__return_zero');
// APIによるバージョンチェックの通信をさせない
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');

フッターのWordPressリンクを非表示にする

フッターのWordPressリンクを非表示にする

例えば、顧客対応用のメールリンクなどに変更しておきます。

functions.phpに下記コードを追記。

// フッターWordPressリンクを非表示に
function custom_admin_footer() {
 echo '<a href="mailto:xxx@zzz">お問い合わせ</a>';
 }
add_filter('admin_footer_text', 'custom_admin_footer');

管理バーの項目を非表示にする

管理バーの項目を非表示にする

WordPressシンボルマークとマイアカウント(プロフィールを編集させたくない場合)、そしてヘルプメニューを非表示にします。

functions.phpに下記コードを追記。

// 管理バーの項目を非表示
function remove_admin_bar_menu( $wp_admin_bar ) {
 $wp_admin_bar->remove_menu( 'wp-logo' ); // WordPressシンボルマーク
 $wp_admin_bar->remove_menu('my-account'); // マイアカウント
 }
add_action( 'admin_bar_menu', 'remove_admin_bar_menu', 70 );

// 管理バーのヘルプメニューを非表示にする
function my_admin_head(){
 echo '<style type="text/css">#contextual-help-link-wrap{display:none;}</style>';
 }
add_action('admin_head', 'my_admin_head');

管理バーにログアウトを追加する

管理バーにログアウトを追加する

上記で、管理バーからマイアカウントメニューを非表示に設定した場合、ログアウトメニューも無くなってしまいますので、管理バーに直接ログアウトメニューを追加します。

functions.phpに下記コードを追記。

// 管理バーにログアウトを追加
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ブログやWordPressフォーラムなど、顧客が利用する上で不要なウィジェットは、非表示にしておきます。

functions.phpに下記コードを追記。

// ダッシュボードウィジェット非表示
function example_remove_dashboard_widgets() {
 if (!current_user_can('level_10')) { //level10以下のユーザーの場合ウィジェットをunsetする
 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');

3行目のif (!current_user_can(‘level_10′))の記述で、権限がlevel10以下のユーザー(管理者でない場合)のみに適用させます。※この記述が無い場合、管理者でログインしても非表示になります。また、上記の場合、全てのウィジェットが非表示となってしまいますので、必要に応じて項目を削ってください。

メニューを非表示にする

メニューを非表示にする

ユーザー権限が弱くなるにつれて、アクセスできるメニューも制限されますが、特定のメニューを非表示にすることも可能です。※以下はメニュー項目を非表示にする記述であり、各メニューへのアクセス自体を制限できるものではありません。各メニューへのアクセスは、それぞれのユーザー権限によって制限されています。

functions.phpに下記コードを追記。

// メニューを非表示にする
function remove_menus () {
 if (!current_user_can('level_10')) { //level10以下のユーザーの場合メニューをunsetする
 remove_menu_page('wpcf7'); //Contact Form 7
 global $menu;
 unset($menu[2]); // ダッシュボード
 unset($menu[4]); // メニューの線1
 unset($menu[5]); // 投稿
 unset($menu[10]); // メディア
 unset($menu[15]); // リンク
 unset($menu[20]); // ページ
 unset($menu[25]); // コメント
 unset($menu[59]); // メニューの線2
 unset($menu[60]); // テーマ
 unset($menu[65]); // プラグイン
 unset($menu[70]); // プロフィール
 unset($menu[75]); // ツール
 unset($menu[80]); // 設定
 unset($menu[90]); // メニューの線3
 }
 }
add_action('admin_menu', 'remove_menus');

3行目のif (!current_user_can(‘level_10′))の記述で、権限がlevel10以下のユーザー(管理者でない場合)のみに適用させます。※この記述が無い場合、管理者でログインしても非表示になります。また、上記の場合、全てのメニューが非表示となってしまいますので、必要に応じて項目を削ってください。

4行目のremove_menu_page(‘wpcf7′);は、
Contact Form7プラグインを使用している場合に表示される、お問い合わせメニューを非表示にするものです。

投稿画面の項目を非表示にする

投稿画面の項目を非表示にする

テキストエディターの下にある各種項目も、不要なものは非表示にしておきます。

functions.phpに下記コードを追記。

// 投稿画面の項目を非表示にする
function remove_default_post_screen_metaboxes() {
 if (!current_user_can('level_10')) { // level10以下のユーザーの場合メニューをremoveする
 remove_meta_box( 'postcustom','post','normal' ); // カスタムフィールド
 remove_meta_box( 'postexcerpt','post','normal' ); // 抜粋
 remove_meta_box( 'commentstatusdiv','post','normal' ); // ディスカッション
 remove_meta_box( 'commentsdiv','post','normal' ); // コメント
 remove_meta_box( 'trackbacksdiv','post','normal' ); // トラックバック
 remove_meta_box( 'authordiv','post','normal' ); // 作成者
 remove_meta_box( 'slugdiv','post','normal' ); // スラッグ
 remove_meta_box( 'revisionsdiv','post','normal' ); // リビジョン
 }
 }
add_action('admin_menu','remove_default_post_screen_metaboxes');

3行目のif (!current_user_can(‘level_10′))の記述で、権限がlevel10以下のユーザー(管理者でない場合)のみに適用させます。※この記述が無い場合、管理者でログインしても非表示になります。また、上記の場合、全てのメニューが非表示となってしまいますので、必要に応じて項目を削ってください。

便利なプラグイン

ビジュアルエディターのツールを拡張する

顧客側で記事を更新して頂く際は、ビジュアルリッチエディターで編集してもらうのも良いのですが、より使い易いエディターにカスタマイズするために、ビジュアルテキストエディター(TinyMCE)のツールを拡張するプラグイン《TinyMCE Advanced》を使用します。

TinyMCE Advanced

このプラグインを使用すると、WordPress標準のビジュアルエディターには用意されていない、表の挿入などのツールボタンを追加することができます。Microsoft Wordなどと同様のツールが使えるので、記事の作成が効率化されるかと思います。

» TinyMCE Advancedのダウンロード

割り当てられたユーザー権限を細かく設定する

記事や固定ページの投稿や編集など、管理項目は、各ユーザー権限によって制限されています。WordPressプラグイン《Capability Manager》を使用すれば、ユーザー権限ごとに、管理項目を設定することが出来ます。

Capability Manager

例えば、「投稿者権限で固定ページも編集出来るようにしたい。」「編集者権限でユーザーを追加出来るようにしたい。」など、各ユーザー権限によって、標準で設定されている管理項目を変更することが出来ます。

» Capability Managerのダウンロード


RESPONSE to this ARTICLE

LEAVE A REPLY

*