В настоящее время у меня есть настройка сайта WP с уникальным плагином «мультисайта», установленным специально для обеспечения единой области администрирования продуктов WooCommerce, но с двумя разными интерфейсами, основанными на двух разных доменах, с отдельными темами.
Один из сайтов является «оптовым», а другой - «розничным». Оптовый сайт должен позволять совершать покупки только торговым клиентам. Проблема заключается в том, что оба сайта используют один домен и, следовательно, учетные записи пользователей.
Проблема: мне нужно убедиться, что пользователь, у которого нет роли пользователя trade_customer, пытается войти на оптовый сайт, роль проверяется, и пользователь выходит из системы, перенаправляется на страницу входа с уведомлением. Пока у меня в functions.php есть следующее:
function trade_customers_only() {
function get_user_role() {
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
return $user_role;
}
$the_current_role = get_user_role();
echo $the_current_role;
if( $the_current_role != 'administrator' ) {
$logout_url = wp_login_url().'?mode=tradeonly';
wp_destroy_current_session();
wp_logout();
wp_redirect( $logout_url, 302 );
exit();
}
}
add_action('wp_login', 'trade_customers_only');
// CUSTOM LOGIN MESSAGES
function my_login_message() {
if( $_GET['mode'] == 'tradeonly' ){
$message = '<p class="message"><b>You must be a Trade Customer to access this site.</b></p>';
return $message;
}
}
add_filter('login_message', 'my_login_message');
Этот код в настоящее время: возвращает зарегистрированного пользователя на wp-login.php и добавляет примечание «Вы должны быть торговым клиентом ... и т. Д.». Однако после первой попытки входа в систему с любой ролью пользователя при каждой другой попытке входа выполняется такое же перенаправление и отображается сообщение. Мой код неверен или в базе данных или браузере есть файл cookie сеанса WP, вызывающий проблему, из-за которой WP думает, что я не использую учетную запись администратора?
В первый раз я попытался войти в систему с учетной записью администратора. это сработало и перешло на приборную панель. Следующая попытка была с ролевой учетной записью клиента. Перенаправление и примечание произошло. Следующая попытка с учетной записью администратора выполняла только перенаправление с примечанием, но без доступа к панели управления.