Движок WordPress все чаще и чаще используется в качестве фреймворка для веб-приложений. Перед некоторыми пользователями встает проблема по поводу того, как можно воспользоваться конкретными страницами, а также функциями, опциями в зависимости от того, какая роль у пользователя. Поэтому, в данной статье мы рассмотрим, перенаправлять пользователей на сайт, в зависимости от их ролей.
Начнем с того, что мы будем создавать новый отдельный плагин. Это необходимо для того, что если Вы вдруг будете редактировать функционал своего ресурса, то все настройки, что сделаем мы без плагина могут слететь, поэтому лучше вынести в отдельный плагин.
Для начала необходимо создать папку cm-redirect-by-role в wp-content/plugins и в нашей новой папке создать следующий файл cm-redirect-by-role.php, после чего добавить описание плагина.
<?php/*
Plugin Name: Redirect Users by Role
Plugin URI:
Description: Redirects users based on their role
Version: 1.0
Author: SFNdesign, Curtis McHale
Author URI: http://sfndesign.ca
License: GPLv2 or later
*//*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/// TODO ?>
Описание плагина мы сделали, теперь разберем, как же работает у нас авторизация в WordPress. По умолчанию, в WordPress, адрес авторизация для пользователей выглядит следующим образом http://site.ru/wp-login.php, именно с данного адреса происходит перенаправление в панель администратора.
Для того чтобы запустить консоль, необходимо выполнить процедуру перехвата данных, которые вводит пользователь, чтобы его потом перенаправить на нужную страницу. В большинстве случаях, данная процедура привязана к admin_init и она запускается таким образом, что сам пользователь этого не замечает.
Если Вы будете использовать admin_init, то в гарантированном порядке сможете перенаправить пользователя на нужную страницу после того, как он введет логин и пароль.
Давайте посмотрим на код, который в этом поможет. Например, мы хотим перенаправить всех подписчиков ресурса, после того как они авторизируются.
/**
* Redirects users based on their role
*
* @since 1.0
* @author SFNdesign, Curtis McHale
*
* @uses wp_get_current_user() Returns a WP_User object for the current user
* @uses wp_redirect() Redirects the user to the specified URL
*/function cm_redirect_users_by_role(){$current_user= wp_get_current_user();$role_name=$current_user->roles[0];if('subscriber'===$role_name){
wp_redirect('http://yoursite.com/dashboard');}// if}// cm_redirect_users_by_role
add_action('admin_init','cm_redirect_users_by_role');
Сначала мы получаем данные, где задаем роль пользователя, после чего происходит проверка, если получаемая роль пользователя совпадает с той, что у него имеется на самом деле, если совпадает, то мы перенаправляем его на ту страницу, которая отведена для роли данного пользователя.
Чтобы не было различных сбоев, конфликтов при перенаправлении пользователей, необходимо кое-что изменить, а именно нашу функцию, она будет выглядеть следующим образом:
function cm_redirect_users_by_role(){if(!defined('DOING_AJAX')){$current_user= wp_get_current_user();$role_name=$current_user->roles[0];if('subscriber'===$role_name){
wp_redirect('http://yoursite.com/dashboard');}// if $role_name}// if DOING_AJAX}// cm_redirect_users_by_role
add_action('admin_init','cm_redirect_users_by_role');
Вот такая небольшая статья, в которой Вы найдете ответ по поводу того, чтобы перенаправлять пользователя на определенную страницу, в зависимости от того, какая роль ему отведена.