web-dev-qa-db-fra.com

Comment conserver les attributs HTML5 sur le balisage

J'ai une page avec certains balises html et attributs d'élément, comme indiqué dans l'extrait ci-dessous:

<ul class="accordion" data-accordion="">

Lorsque je modifie la page en tant qu'utilisateur avec le rôle d'administrateur WP, le <ul> reste intact lors de la mise à jour de la page. Parfait.

Pourtant, lorsqu'un utilisateur avec le rôle WP Editor (Editeur) modifie la page, la balise ul est enregistrée comme suit:

<ul class="accordion">

Notez que l'attribut data-accordéon est supprimé.

Comment faire en sorte que WordPress conserve les attributs des balises de marquage pour les utilisateurs dotés du rôle Editeur?

3
user98796

Il suffit d'ajouter la capacité unfiltered_html au rôle Editor.

Ajoutez le code suivant dans le functions.php de votre thème actuel:

function wpse_change_capability() {
    $role = get_role( 'editor' );
    if ( ! $role->has_cap( 'unfiltered_html' ) )
        $role->add_cap( 'unfiltered_html' );
}
add_action( 'init', 'wpse_change_capability', 10 );

Connectez-vous en tant qu'utilisateur avec le rôle Editor. Testez-le en modifiant n'importe quel article/page. Le balisage HTML sera préservé. Supprimez le code ci-dessus de functions.php.

Si vous décidez de supprimer la capacité unfiltered_html du rôle Editor, répétez les étapes décrites ci-dessus en utilisant le code suivant:

function wpse_change_capability() {
    $role = get_role( 'editor' );
    if ( $role->has_cap( 'unfiltered_html' ) )
        $role->remove_cap( 'unfiltered_html' );
}
add_action( 'init', 'wpse_change_capability', 10 );