web-dev-qa-db-fra.com

À quelle action dois-je m'attacher lors de l'ajout de rôles et de fonctionnalités?

Je vais utiliser add_role () et $ role-> add_cap () pour configurer un nouveau rôle personnalisé et associer une nouvelle fonctionnalité aux rôles existants.

Je me demande où est le meilleur endroit pour faire ça? Évidemment, je peux le faire directement dans functions.php et en finir. Mais est-ce la meilleure pratique? Dois-je le faire uniquement sur admin_init? ou devrais-je le faire sur init?

Je ne suis pas tout à fait sûr des meilleures pratiques en matière d'utilisation de hooks d'action init plutôt que de simplement laisser tomber un appel de fonction direct dans functions.php.

merci pour votre contribution!

9
Tom Auger

Lorsque vous ajoutez un rôle et des fonctionnalités, il vous suffit d'exécuter le code une seule fois, car les rôles et les fonctionnalités sont enregistrés dans la base de données lors de l'utilisation des fonctions add_role ou ->add_cap. Comme Andy l'a dit, vous pouvez utiliser after_setup_theme pour ce type d'action tout en ajoutant une sorte de vérification. il ne s'exécute donc qu'une fois, comme register_activation_hook ou à l'aide des options:

add_action('after_setup_theme','my_add_role_function');

function my_add_role_function(){
    $roles_set = get_option('my_roles_are_set');
    if(!$roles_set){
        add_role('my_role', 'my_roleUser', array(
            'read' => true, // True allows that capability, False specifically removes it.
            'edit_posts' => true,
            'delete_posts' => true,
            'upload_files' => true 
        ));
        update_option('my_roles_are_set',true);
    }
}
10
Bainternet

Pour les plugins, j'ai eu du succès en utilisant plugins_loaded pour cela. Pour les thèmes, j'utiliserais after_setup_theme.

5
Andy