#php #wordpress #function #redirect #roles
#php #wordpress #функция #перенаправление #роли
Вопрос:
Этот код отлично работает, если я использую is_front_page в качестве текущей страницы / url, потому что он получает мою домашнюю страницу и перенаправляет пользователя по роли на определенный путь, но это не сработает, если я попытаюсь получить конкретный текущий URL-адрес панели управления wp admin, я пытался с get_home_url(path), но это не работаетработа:
add_action( 'template_redirect', 'role_based_redirect' );
function role_based_redirect() {
if( get_home_url('/wp-admin/current-url') !== false ) { // this doesn't work
$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
wp_redirect( home_url( '/wp-admin/other-url' ) );
exit;
}
}
}
Заранее благодарю вас.
Ответ №1:
хук template_redirect предназначен для передней части вашего сайта. Для стороны администратора вы можете использовать разные перехваты. Например, init, admin_init и т. Д.
например.
add_action( 'admin_init', 'role_based_redirect' );
function role_based_redirect() {
if( strpos($_SERVER["REQUEST_URI"],'wp-admin/current-url') !== false ) {
$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
wp_redirect( home_url( '/wp-admin/other-url' ) );
exit;
}
}
}
Комментарии:
1. Это работает, спасибо, я использовал ‘/wp-admin /current-url’ с косой чертой перед текущим URL