Rendre une page WordPress accessible aux administrateurs uniquement, rediriger d'autres rôles d'utilisateur

4

Je dois rediriger les utilisateurs connectés et non administrateurs , à partir de la page portant l'ID 172, vers la page d'accueil du site Web. Notez que les utilisateurs non connectés peuvent voir la page.

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;
             }
    }   
}

Problème: ce code ne fonctionne pas.

    
posée Omar Tariq 02.04.2014 - 02:02

1 réponse

5

admin_init est exécuté sur les pages d’administrateur, pas sur le serveur frontal. L'action frontale équivalente, init , est trop tôt pour vérifier is_page . Une action sûre pour la redirection est template_redirect :

function xyz() {
    if( is_page( 172 )
        && ! current_user_can('update_core') ) {
            wp_redirect( home_url() );
            exit;
    }   
}
add_action( 'template_redirect', 'xyz' );
    
réponse donnée Milo 02.04.2014 - 02:49

Lire d'autres questions sur les étiquettes