Tornar uma página do WordPress acessível apenas para administradores, redirecionar outras funções de usuário

4

Eu preciso redirecionar os usuários conectados e não administradores , da página com o ID 172, para a página inicial do site. Observe que os usuários que não estão conectados podem realmente ver a página.

add_action('admin_init', 'xyz');
function xyz() {
    if( is_page( 172 ) ) {
             if( is_user_logged_in() && ! current_user_can('update_core') ) {
        wp_redirect( home_url() );
        exit;
             }
    }   
}

Problema: este código não está funcionando.

    
por Omar Tariq 02.04.2014 / 02:02

1 resposta

5

admin_init é executado nas páginas de administração, não no front end. A ação de front end equivalente, init , é muito cedo para verificar is_page . Uma ação segura para redirecionamento é template_redirect :

function xyz() {
    if( is_page( 172 )
        && ! current_user_can('update_core') ) {
            wp_redirect( home_url() );
            exit;
    }   
}
add_action( 'template_redirect', 'xyz' );
    
por Milo 02.04.2014 / 02:49