Intereting Posts
Несколько пользовательских типов сообщений и проблема с permalink Самый простой способ создать страницу пользовательских архивов? Как создать мета-окно для дат? Как добавить существующие категории в сообщение с помощью wp_insert_post Авто прокручивается до id при загрузке страницы на всех страницах, кроме главной страницы. Делайте это только на мобильных устройствах Проблема разбивки на категории Ajax Перенаправление на последнюю страницу, посещаемую до входа в систему как «manage_posts_custom_column» action hook относится к «manage _ $ {post_type} _columns» hook hook? plugin_dir_url (__ FILE__) ищет родительскую тему в расширении ACF Метки регистрационной формы – добавить звездочку Получать сообщение из другого цикла каждый n-столбцы в основном цикле Как включить собственный CSS в wordpress tinymce editor? Иерархия шаблонов для get_header () Перезапись функции плагина Можно ли использовать систему cron для запуска функции, подключенной к API AJAX

WP Multisite с картографированием домена: предотвращение доступа пользователей к панели мониторинга

У меня есть тема, используемая мультисайтом подпапки и многоуровневым сайтом с надписью.

Например

mywpsite.com/site1

mywpsite.com/site2

www.site2.com (приводит к вышесказанному)

У меня есть этот фрагмент кода в файле functions.php

function my_wp_admin_ban(){ if( !current_user_can('activate_plugins') ){ wp_redirect( get_bloginfo('url') ); exit; } } add_action('admin_init','my_wp_admin_ban'); 

Это успешно предотвращает доступ членов сайта1 к области панели управления admin (wp-admin).

Однако этот код не работает для сайта2.

Вместо этого эти пользователи отображаются «У вас недостаточно прав для доступа к этой странице». сообщение об ошибке.

Пробовал все, о чем я могу думать, включая разные способы сделать то же самое. Т.е. как перенаправить не админы на главную страницу, если пытаетесь просмотреть mysite.com/wp-admin/? и Как удалить доступ к панели управления из определенных ролей пользователя?

Что я могу сделать для того, чтобы все пользователи (не admin) из мультисайта были перенаправлены из области панели управления?

Файл functions.php не является местом для запуска такого кода. См. Где мне помещать фрагменты кода, которые я нашел здесь или где-то еще в Интернете?

Вы можете использовать плагин Must Use или сделать простой и Network Activate .

Это будет выглядеть так:

 <?php /* Plugin Name: Only admins on dashboard */ add_action( 'admin_init', 'admin_ban_wpse_105863' ); function admin_ban_wpse_105863() { if( !current_user_can( 'activate_plugins' ) ){ wp_redirect( site_url() ); exit; } } 

Документация для функции get_bloginfo рекомендовала альтернативы для многих случаев. Функция site_url позаботится об использовании текущего URL-адреса блога.


[Обновить]
Единственное место, где появляется сообщение об ошибке ...permissions to access... появляется в файле wp-admin/includes/menu.php . И у этого есть полезный крюк:

 add_action( 'admin_page_access_denied', 'denied_ban_wpse_105863' ); function denied_ban_wpse_105863() { wp_redirect( site_url() ); exit; }