Hacer que una página de WordPress sea accesible solo para administradores, redirigir otros roles de usuario

4

Necesito redirigir a los usuarios registrados y no administradores , de la página con el id 172, a la página principal del sitio web. Tenga en cuenta que los usuarios que no han iniciado sesión pueden ver la 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 no funciona.

    
pregunta Omar Tariq 02.04.2014 - 02:02

1 respuesta

5

admin_init se ejecuta en las páginas de administración, no en el extremo delantero. La acción de front-end equivalente, init , es demasiado pronto para verificar is_page . Una acción segura para la redirección es template_redirect :

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

Lea otras preguntas en las etiquetas