Блокируем wp-admin и консоль для пользователей в wordpress
В некоторых проектах на wordpress мне приходилось изменять стандартную страницу логина и профиля для пользователей. И чтобы такие пользователи не могли попасть в консоль и даже её не видели, я использовал следующий код, который поместил в functions.php
1 2 3 4 5 6 7 8 |
function block_console() { $file = basename($_SERVER['PHP_SELF']); if (($file == 'wp-login.php' AND $_GET["action"]!='logout') OR (is_admin() AND !current_user_can('edit_posts') AND $file != 'admin-ajax.php')){ wp_redirect( home_url() ); exit(); } } add_action('init', 'block_console'); |
Данный код делает 2 проверки:
1 |
$file == 'wp-login.php' AND $_GET["action"]!='logout' |
В данном случае мы блокируем wp-login.php, но даем пользователю возможность разлогиниться.
1 |
is_admin() AND !current_user_can('edit_posts') AND $file != 'admin-ajax.php' |
Во вотором случае, мы блокируем всё кроме admin-ajax.php, через который работают плагины. И конечно проверяем права пользователя.
То есть, если убрать первую проверку, то пользователь сможет использовать обычную страницу входа на сайт(wp-login.php), но не сможет заходить в консоль(wp-admin).
Также, чтобы убрать панель администратора в вверху страниц wordpress был использован код:
1 2 3 4 5 6 |
function hide_bar() { if (!current_user_can('administrator') AND !is_admin()) { show_admin_bar(false); } } add_action('after_setup_theme', 'hide_bar'); |