Comment ajouter une fonctionnalité à un rôle d'utilisateur?

11

Je gère un réseau Wordpress et souhaite ajouter la fonctionnalité d'utilisateur unfiltered_html au rôle d'utilisateur déjà prédéfini de l'administrateur. Dans une installation standard de Wordpress, le compte administrateur aurait déjà cette capacité, mais dans une installation MU, seuls les super-administrateurs ont cette possibilité. Wordpress Rôles et fonctionnalités .

Comment puis-je augmenter le rôle d'administrateur à partir d'un thème ou d'un plugin?

    
posée Jonnybojangles 29.03.2011 - 19:31

2 réponses

12

Vous pouvez utiliser la classe WP_Role ,

.
// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

Donc, pour répondre à votre question initiale sur la manière de permettre aux administrateurs de saisir des balises SCRIPT et IFRAME dans le contenu d'un message, vous recherchez la fonctionnalité 'unfiltered_html', qui, dans Multisite, n'est accordée qu'aux super administrateurs.

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

ou vous pouvez l'exécuter une fois dans vos fonctions:

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));
    
réponse donnée Philip 30.03.2011 - 07:39
2

Pour autoriser un autre rôle que Super Admin ou Admin (selon que l'installation Wordpress est une instance réseau / MU ou non), il est nécessaire d'ajouter du code html non filtré à une publication ou à un commentaire. Le filtre KSES de Wordpress doit être supprimé.

Vérifiez si un utilisateur a une capacité particulière.

if ( current_user_can( 'unfiltered_html' ) ) { … }

Si c'est le cas, supprimez KSES

kses_remove_filters();

Cette fonctionnalité est déjà intégrée dans un filtre non filtré, ce qui permet aux administrateurs et aux éditeurs d'ajouter du code HTML non filtré.

    
réponse donnée Jonnybojangles 06.04.2011 - 20:17

Lire d'autres questions sur les étiquettes