企業のCMSやその他WordPressでユーザー権限を分けており、このユーザーはこの機能使わせたくない(見せたくない)から、管理画面のメニューを非表示にする。
なんていうふうにやっているのは多いかと思います。
- functions.phpでunset
- Pluginで対応(WP Admin UI Customize、Adminimize その他大勢)
でもこれらってメニューから非表示にしてアクセスしにくくしているだけで、URL直接叩くとアクセス出来てしまいますね。
例:プラグインページに直接アクセス
https://ドメイン/wp-admin/plugins.php
管理画面を必要なメニューだけにして使いやすくすることは成功していますが、このページ(機能)は操作させたくない。となりますとユーザー権限、またはユーザー名などでアクセス制御をさせなければいけないですね。
さくっとプラグインを探しましたが見つかりませんでした。結構メニューの制御だけで終わっているサイトなど多いのかと思いました。
下記は管理画面下、かつニックネームが「xxxx」、直接アクセスを見つけたら特定アドレスにメールをして終了(wp_die())させるサンプルです。
禁止ページはテーマ、テーマ編集、プラグイン、プラグインインストール、プラグイン編集です。
functions.php
if ( is_admin() === TRUE ) {
$user = wp_get_current_user();
if ( 'xxxx' === $user->user_nicename ) {
$not_allow_urls = ['themes.php', 'theme-editor.php', 'plugins.php', 'plugin-install.php', 'plugin-editor.php'];
foreach ( $not_allow_urls as $url ) {
if ( strpos($_SERVER["REQUEST_URI"], $url) !== FALSE ) {
wp_mail( 'xxxxxxxxxx@gmail.com', '[SITE_NAME] NOT ALLOW ACTION', $user->user_nicename. ' '. $url );
wp_die('禁止項目へのアクセスを見つけました.(管理者へメール送信しました)', '禁止項目へのアクセス', array('responce' => 403));
}
}
}
}
メニュー制御するプラグインと合わせてお使いください 🙂