web-dev-qa-db-fra.com

accorder un privilège pour les rôles (par exemple les éditeurs) et supérieurs

Mon thème wordpress a un post-type personnalisé. Seuls les éditeurs (et les versions supérieures) devraient être autorisés à utiliser ce type de publication.

J'ai fait ça avec:

function add_capability($role,$cap) {
    $role_obj = get_role($role); // get the the role object
    $role_obj -> add_cap($cap); // add $cap capability to this role object
}

function set_cpt() {
    add_capability('editor', 'edit_cpt');
    add_capability('editor', 'read_cpt');
    add_capability('editor', 'delete_cpt');
    add_capability('editor', 'edit_cpt');
    add_capability('editor', 'edit_cpt');
    add_capability('editor', 'publish_cpt');
    add_capability('editor', 'read_cpt');
}
add_action('init', 'set_cpt');

(Je pense) dans Wordpress 3.1 cela suffisait - tous les éditeurs et les versions supérieures avaient le droit d'utiliser le type de message.

À présent, dans Wordpress 3.2  uniquement les éditeurs ont le droit d'utiliser le type de publication.

Existe-t-il un moyen d'accorder des privilèges au rôle X et aux rôles supérieurs ou devrais-je mentionner tous les rôles?

Je vous remercie!

[modifier]

en fait, j'ai découvert que cela n'avait jamais fonctionné auparavant. Mais y a-t-il une autre façon de le faire?

1
Marcel

Si vous utilisez le plugin Members , vous pouvez le configurer comme vous le souhaitez. Il a également la possibilité d'ajouter des rôles personnalisés (votre edit_cpt et ainsi de suite)

aussi beaucoup de plugins fonctionnent aussi de cette façon:

<?php if ( current_user_can('manage_options') ) { do_something(); } ?>

3
user2015