[WordPress] 特定ユーザーに特定ページをアクセスさせない(メニュー非表示だけではない)

企業の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));
			}
		}
	}
}

メニュー制御するプラグインと合わせてお使いください 🙂

シェアする

  • このエントリーをはてなブックマークに追加

フォローする