指定ユーザーのみ処理をさせる条件式
指定ユーザーに処理を反映させる方法は以下の通りです。
global $current_user;
get_currentuserinfo();
if ($current_user->ID != "1" ) {
//ここに処理を書く
}
今回は、製作者(ID:1)以外に適用させるので「$current_user->ID != “1”」を使いました。
これにより「ユーザーIDが1じゃなかった場合、処理をしなさい」という事になります。
if分の中に適用させたい処理を書いていきましょう。
メニューの一部を非表示にする
管理画面のメニューはクライアントに必要のない項目が多いです。そのままにして置くのも可能ですが、万が一間違えて触ってしまったら大変なことになります。そうなる前に不要なメニューは非表示にしちゃいましょう。
function remove_menus () {
global $menu;
global $current_user;
get_currentuserinfo();
if($current_user -> ID != "1") {
$restricted = array(
__('固定ページ'),
__('コメント'),
__('お問い合わせ'),
__('外観'),
__('プラグイン'),
__('ユーザー'),
__('ツール'),
__('設定')
);
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){
unset($menu[key($menu)]);
}
}
remove_submenu_page('index.php','update-core.php'); //更新非表示
remove_submenu_page('edit.php','edit-tags.php?taxonomy=post_tag'); //タグ非表示
remove_submenu_page('edit.php','edit-tags.php?taxonomy=category'); //カテゴリー非表示
remove_menu_page('siteguard'); //SiteGuardプラグイン非表示
}
}
add_action('admin_menu', 'remove_menus');
一部のメニューは「$restricted = array」で指定しても非表示になりません。
その場合は「remove_menu_page」「remove_submenu_page」で非表示にしましょう。
メニューの名前を変更する
管理画面のメニューの名前は初めて触るクライアントにとって混乱を招く要素となります。
もっとわかりやすくシンプルな名前にしましょう。
global $current_user;
get_currentuserinfo();
if ($current_user->ID != "1" ) {
add_filter( 'gettext', 'change_side_text' );
add_filter( 'ngettext', 'change_side_text' );
function change_side_text( $translated ) {
$translated = str_ireplace( 'ダッシュボード', '管理画面TOP', $translated );
$translated = str_ireplace( 'ニュース', 'お知らせを書く', $translated );
$translated = str_ireplace( '投稿', 'ブログを書く', $translated );
$translated = str_ireplace( 'メディア', '画像の管理', $translated );
return $translated;
}
上部の管理バーの項目を非表示にする
global $current_user;
get_currentuserinfo();
if ($current_user->ID != "1" ) {
function mytheme_remove_item( $wp_admin_bar ) {
$wp_admin_bar->remove_node('updates'); // アップデート通知
$wp_admin_bar->remove_node('wp-logo'); // WordPressロゴ
$wp_admin_bar->remove_node('comments'); // コメント
$wp_admin_bar->remove_node('new-content'); // 新規投稿ボタン
$wp_admin_bar->remove_menu('my-account'); // マイアカウント
}
add_action( 'admin_bar_menu', 'mytheme_remove_item', 1000 );
}
表示オプションとヘルプを非表示にする
表示させる項目を選択するための「表示オプション」があるのですが、クライアント側で表示させたい項目を変更出来てしまいます。出来る限りシンプルにさせたいので、この機能も非表示にしましょう。またクライアントにとって意味を成さない「ヘルプ」も非表示にしましょう。
global $current_user;
get_currentuserinfo();
if ($current_user->ID != "1" ) {
function my_admin_head(){
echo '<style type="text/css">#contextual-help-link-wrap,#screen-options-link-wrap{display:none;}</style>';
}
add_action('admin_head', 'my_admin_head');
}
ここではCSSを利用しています。
表示オプションに指定されている「#screen-options-link-wrap」「#contextual-help-link-wrap」を「Display:none」で非表示にすることが出来ます。
ダッシュボードに製作者からのお知らせを載せる
製作者からクライアントへお知らせを載せたい場合、以下の方法で載せることが出来ます。マニュアルのダウンロードや更新情報などを載せるのに大変便利です。
global $current_user;
get_currentuserinfo();
if ($current_user->ID != "1" ) {
add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');
function my_custom_dashboard_widgets() {
global $wp_meta_boxes;
wp_add_dashboard_widget('custom_help_widget', 'HYZstudioからのお知らせ', 'dashboard_text');
}
function dashboard_text() {
echo '<p>ここに文章を書く</p>';
}
}
いかがだったでしょうか?
クライアントへ渡す際には是非行っておきたい設定です。
後で問題が発生するよりも先に問題の発生源を無くす事が大事です。クライアントが安心して簡単に使えるよう心がけるのが製作者です。クライアントを不安にさせない、問題を発生させないようにしていきましょう!