Продолжайте регистрироваться в Пользователях вне панели администратора

Поэтому я создаю регистрацию пользователя. Просто просто <?php wp_register(); ?> <?php wp_register(); ?> но затем он дает им ссылку на панель администратора, которая в моей ситуации им действительно не нужна. Как удалить ссылку «Администратор сайта» и перенаправить подписчика, если они попытаются получить доступ к панели администратора? Я думаю, как только они войдут в систему, мне также нужно будет перенаправить их на определенную страницу.

Solutions Collecting From Web of "Продолжайте регистрироваться в Пользователях вне панели администратора"

Вы можете удалить возможности read у подписчиков, что дает им доступ к панели управления. Это лучше всего сделать с помощью активационного крючка на плагине – это нужно сделать только один раз.

 <?php register_activation_hook( __FILE__, 'wpse43054_activation' ); function wpse43054_activation() { $role = get_role( 'subscriber' ); if( $role ) $role->remove_cap( 'read' ); } 

И, конечно же, вы, вероятно, захотите вернуть эту возможность при отключении плагина.

 <?php register_deactivation_hook( __FILE__, 'wpse43054_deactivation' ); function wpse43054_deactivation() { $role = get_role( 'subscriber' ); if( $role ) $role->add_cap( 'read' ); } 

Наконец, вы можете подключаться к init и перенаправлять людей, если они вошли в систему, попытаться получить доступ к области администрирования и не иметь возможности чтения.

 <?php add_action( 'init', 'wpse43054_maybe_redirect' ); function wpse43054_maybe_redirect() { if( is_admin() && ! current_user_can( 'read' ) ) { wp_redirect( home_url(), 302 ); exit(); } } 

Вероятно, вы также захотите удалить панель администратора для пользователей с возможностью read . Вы можете сделать это, подключившись к get_user_metadata и захватив проверку для мета-значения пользователя для show_admin_bar_front .

 <?php add_filter( 'get_user_metadata', 'wpse43054_hijack_admin_bar', 10, 3 ); function wpse43054_hijack_admin_bar( $null, $user_id, $key ) { if( 'show_admin_bar_front' != $key ) return null; if( ! current_user_can( 'read' ) ) return 0; return null; } 

Все это как плагин .

Поэтому я нашел ответ и подумал, что это может быть полезно для более поздних зрителей. Добавление кода ниже приведет к перенаправлению всех пользователей, которые не являются администраторами на главной странице.

 function prevent_admin_access() { if (strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') !== false && !current_user_can('administrator')) { wp_redirect(get_option('siteurl')); } } add_action('init', 'prevent_admin_access', 0); 

Единственная проблема с этим кодом заключается в том, что регистрация должна быть изменена, чтобы пользователь мог выбрать свой собственный пароль.