web-dev-qa-db-fra.com

Empêcher WordPress de supprimer les attributs HTML

J'essaie d'insérer une publication avec html tag avec l'attribut class, comme ceci: <dl class="dl-horizontal">, mais après avoir enregistré la publication, WP supprime un attribut.
Comment puis-je résoudre ce problème?
Le seul moyen que j’ai trouvé est de faire un shortcode:

add_shortcode('attr', 'html_attr');
function html_attr( $atts, $content = null ){
 extract( shortcode_atts( array(
    'tag' =>"",
    'attr'=>""
  ), $atts ) );   
  return "<" .  $tag . " " . $attr . " >";
}

Mais je ne pense pas que ce soit une bonne façon ...

4
s976

Veuillez regarder le plugin TinyMCE Advanced.

http://wordpress.org/extend/plugins/tinymce-advanced/

Vous pouvez le configurer pour laisser certaines balises seules. c'est vraiment utile.

3
jochem

J'ai eu ce problème lors de l'exécution multi-site et l'utilisateur était seulement un administrateur du site. En tant que super-administrateur, je pourrais mettre tous les attributs HTML que je voulais. Je suis sûr que la solution à long terme ne consiste pas à élever leurs privilèges, mais cela pourrait être un endroit pour commencer à chercher des solutions.

@jochem, je suis allé dans la voie de faire les changements tinymce, mais cela ne semble pas source d'effet d'édition.

Si quelqu'un a trouvé une meilleure solution, il serait utile de l'afficher.

2
AC4

Assurez-vous de rester en mode HTML dans l'éditeur de texte. Parfois, revenir en arrière et apporter des modifications en mode visuel peut écraser des éléments HTML.

0
theMojoWill

Peut-être que c'est Kses qui l'enlève.

Essaye ça

function allow_dl_class_content() {
   global $allowedposttags, $allowedtags;
   $newattribute = "class";

   $allowedposttags["dl"][$newattribute] = true;
   $allowedtags["dl"][$newattribute] = true;
}
add_action( 'init', 'allow_dl_class_content' );
0
Alessandro