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' );