Перенаправление по роли пользователя с определенного URL-адреса администратора на другой URL

#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