企業の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)); } } } }
メニュー制御するプラグインと合わせてお使いください 🙂