web-dev-qa-db-fra.com

comment savoir si l'administrateur est dans la page d'édition ou la publication

J'utilise ceci après avoir vérifié si l'utilisateur est admin

   if ( isset($_GET['action'])  && $_GET['action'] === 'edit' )

y a-t-il un meilleur moyen?

15
DrMosko

Vous pouvez utiliser get_current_screen pour le déterminer.

$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
    echo 'edit screen';
}

Je ne sais pas si je dirais exactement que c'est toujours mieux, cela dépend de ce qui est nécessaire, mais c'est probablement la façon dont je le ferais. Le gros avantage de cette méthode est que vous avez accès à plus d’informations et qu’il peut faire plus de distinctions différentes. Il suffit de regarder la documentation pour comprendre ce que je veux dire.

Il devrait être utilisé dans les crochets ultérieurs, Codex dit:

La fonction retourne null si elle est appelée à partir du hook admin_init. Il devrait pouvoir être utilisé dans un hook ultérieur tel que current_screen.

14
Nicolai
  • Utilisez 'get_current_screen', assurez-vous au préalable qu’il existe.
  • Comme codex dit "Cette fonction est définie sur la plupart des pages d’administrateur, mais pas toutes."
  • Cela permet également de filtrer les vues normales (destinées au lecteur) (relisez cette phrase, en mettant l’accent sur pages admin ).
  • il est fort probable que la prochaine chose que vous voulez comprendre est, si vous êtes réellement sur une page ou un post ...

    // Remove pointless post meta boxes
    function FRANK_TWEAKS_current_screen() {
        // "This function is defined on most admin pages, but not all."
        if ( function_exists('get_current_screen')) {  
    
            $pt = get_current_screen()->post_type;
            if ( $pt != 'post' && $pt != 'page') return;
    
            remove_meta_box( 'authordiv',$pt ,'normal' );        // Author Metabox
            remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Comments Status Metabox
            remove_meta_box( 'commentsdiv',$pt ,'normal' );      // Comments Metabox
            remove_meta_box( 'postcustom',$pt ,'normal' );       // Custom Fields Metabox
            remove_meta_box( 'postexcerpt',$pt ,'normal' );      // Excerpt Metabox
            remove_meta_box( 'revisionsdiv',$pt ,'normal' );     // Revisions Metabox
            remove_meta_box( 'slugdiv',$pt ,'normal' );          // Slug Metabox
            remove_meta_box( 'trackbacksdiv',$pt ,'normal' );    // Trackback Metabox
        }
    }
    add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );
    
4
Frank Nocke

Meilleure façon:

variable globale $ pagenow

global $pagenow;
if (( $pagenow == 'post.php' ) || (get_post_type() == 'post')) {

    // editing a page

}
if ($pagenow == 'profile.php') {

    // editing user profile page

}

source: https://wordpress.stackexchange.com/a/7281/33667

4
T.Todua

Pour vérifier si l'utilisation actuelle est un administrateur, j'aime utiliser la fonction suivante:

<?php    
function is_user_admin(){
    if ( is_user_logged_in() ){
        if( current_user_can( 'manage_options' ) )
        {
          return true;
        }
        else
        {
          return false;
        }
    }
    return false;
    }
?>
0
Vigs