2012-09-21 2 views

Répondre

4

Comme je l'ai essayé d'expliquer dans les commentaires ci-dessous ma réponse à a recent question of yours, et comme mentionné dans le Ressources Dev section à the bottom of your linked docs, current_user_can est (pour autant que je suis conscient) la façon la plus complète et flexible pour tester l'utilisateur capacités étant donné le remplacement (2.0) et la dépréciation (3.0) de User Levels. Si vous autorisez ou en restreignant l'accès pour afficher une page ou apporter des modifications spécifiques, il est logique de faire le lien avec les fonctionnalités déjà définies par Wordpress comme étant associées aux rôles. Cela devient particulièrement vrai lorsque vous utilisez une sorte de rôle portée, capacité d'édition, ou super admin plugins ou fonctions. Il n'est également pas gêné par les applications dans des installations individuelles ou multi-sites, et couvre l'ensemble des utilisateurs possibles. Lorsque vous testez si l'utilisateur actuel peut faire ceci ou cela, ces capacités sont beaucoup moins susceptibles de changer que les capacités associées à certains rôles ou niveaux utilisateur.

Tout ce que vous devez savoir sur current_user_can est assez bien expliqué in the docs, et il suit généralement cette logique:

if (current_user_can('do_something_pertaining_to_the_below')) { 
    echo 'You are a user who can do the above thing, so do the below thing'; 
    /* the thing */ 
} 

inverse:

if (!current_user_can('some_fancy_capability')) { 
    echo 'No can do'; 
    return; 
} 
else { /* the similarly fancy, restricted thing */ } 

Cela dit, si quelqu'un a entendu parler d'un manière plus progressive et intelligente de le faire, je suis tout ouïe!

+0

Merci pour cette réponse très détaillée! J'étais au courant de cette solution, actuellement j'utilisais une instruction if pour si l'utilisateur est connecté alors etc. J'utilise un fichier personnalisé pour cela, page-slug.php - la raison pour laquelle j'ai demandé ceci est s'il y avait un meilleur façon de le faire. Néanmoins, j'ai voté pour votre réponse car elle est correcte et je l'accepterai comme correcte demain. Je vais le laisser ouvert pour permettre aux autres de partager leurs solutions. –

+0

Très bien alors crowjonah, merci encore pour la réponse. Réponse acceptée. –

Questions connexes