Intereting Posts
Как мне нужно регистрировать JavaScript, который не является файлом? Перенаправление не регистрируется пользователями, если они находятся на определенной странице и категории Войдите в систему после «Подробнее», затем вернитесь к статье Создание сети субдоменов в субдомене каков правильный способ сравнения дат в WP query_posts meta_query Ресурсы Avada по-прежнему загружаются с локального хоста после миграции базы данных Проблемы с изображениями после импорта резервной копии базы данных на мой локальный веб-сервер wordpress в подкаталоге вместе с другими папками с nginx Где я могу получить хостинг wordpress, похожий на wordpress.com? Как отобразить html в коротком коде Как отображать пользовательские типы сообщений через общую таксономию? Ограничение памяти WP_Table_List и ob_start () Прикрепление данных таксономии для публикации с помощью wp_insert_post все еще получают регистрацию с wp-регистром, перенаправленным на wp-login Хранение массива из возвращаемого запроса базы данных и использование массива в новом запросе

Как настроить таргетинг на определенную роль пользователя?

Я пытаюсь создать простой набор кодов для перенаправления «Подписчиков» только на домашнюю страницу (или желаемую страницу) после входа в систему. Я думал использовать if( current_user_can('read') ): но это глобальная возможность, будет применима и ко всем другим ролям. Поэтому я попробовал get_role('subscriber') . Вот мои коды functions.php (благодаря Len ):

 function subscriber_redirection() { global $redirect_to; if( get_role('subscriber') ) { if ( !isset( $_GET['redirect_to'] ) ) { $redirect_to = get_option('siteurl'); } } } 

Но это тоже перенаправляет администраторов!

  • Как настроить целевую роль только для определенной роли пользователя?

get_role только собирается вернуть информацию о роли. Это не скажет вам, имеет ли текущий пользователь эту роль. Используйте wp_get_current_user с wp_get_current_user вроде:

 function subscriber_redirection() { global $redirect_to; $user = wp_get_current_user(); if (in_array('subscriber',$user->roles)) { // user has subscriber role if ( !isset( $_GET['redirect_to'] ) ) { $redirect_to = get_option('siteurl'); } } } 

Я не знаю, почему вы используете global $redirect_to; но никогда ничего не делайте с переменной.

'get_role' возвращает объект, а не логический: http://codex.wordpress.org/Function_Reference/get_role

 // for example: if the user can not moderate comments if (!current_user_can('moderate_comments') ) { //redirect } 

Здесь вы можете найти все возможности: http://codex.wordpress.org/Roles_and_Capabilities