管理者権限が無い購読者とかに対して、管理画面上の左のメニューを削除するには、
add_action('admin_init', 'remove_menus');
function remove_menus(){
if(!current_user_can('edit_posts')){ //編集権限が無い場合、以下のメニューを削除
remove_menu_page('index.php'); //ダッシュボード
remove_menu_page('separator1'); //区切り線
remove_menu_page('profile.php'); //プロフィール
remove_menu_page('separator2'); //区切り線
}
}
と書けばOKです。
しかし、http://hoge.com/index.php などと直接ダッシュボードのURLを打ち込まれると、メニューから削除してるだけなので実行出来てしまいます。これを防ぐには、更にコードを追加する必要があります。
add_action('admin_init', 'remove_menus');
function remove_menus(){
if(!current_user_can('edit_posts')){
remove_menu_page('index.php');
remove_menu_page('separator1');
remove_menu_page('profile.php');
remove_menu_page('separator2');
$r_url = $_SERVER["REQUEST_URI"]; //実行URLを取得
if(
$r_url == "/wp-admin/index.php" || //ダッシュボードのURL
$r_url == "/wp-admin/" || //ダッシュボードのURL
$r_url == "/wp-admin/profile.php" //プロフィールのURL
){
wp_redirect( get_home_url() ); //サイトのトップページへリダイレクト
}
}
}
これで、管理者以外には、管理画面のメニューにも表示されないし、メニュー自体が実行出来ないようになります。