web-dev-qa-db-fra.com

Pourquoi wp_kses ne conserve-t-il pas les attributs de style comme prévu?

Je veux conserver l'attribut style. $ str n'est qu'un exemple, voici mon code:

$allowed_html = array(
     'div' => array(
         'title' => array(),
         'class' => array(),
         'style' => array()
    )
);

$str = '<div title='Click to continue' style='display:table'>This is a button</div>';
wp_kses($str, $allowed_html );

$ str recevra en fait un tas de balises et d'attributs HTML à partir d'un article. Ensuite, à partir de là, je souhaite supprimer toutes les balises et tous les attributs, en ne laissant que les balises divs, ainsi que les attributs de style et de titre.

Merci, MMK.

5
MMK

C'est une question plus ancienne, mais voici la réponse pour les générations futures:

WordPress comparera les styles à une liste blanche et supprimera l’attribut style si aucun de ces styles n’est sûr. La liste blanche par défaut est:

  • text-align
  • margin
  • color
  • float
  • border
  • background
  • background-color
  • border-bottom
  • border-bottom-color
  • border-bottom-style
  • border-bottom-width
  • border-collapse
  • border-color
  • border-left
  • border-left-color
  • border-left-style
  • border-left-width
  • border-right
  • border-right-color
  • border-right-style
  • border-right-width
  • border-spacing
  • border-style
  • border-top
  • border-top-color
  • border-top-style
  • border-top-width
  • border-width
  • caption-side
  • clear
  • cursor
  • direction
  • font
  • font-family
  • font-size
  • font-style
  • font-variant
  • font-weight
  • height
  • letter-spacing
  • line-height
  • margin-bottom
  • margin-left
  • margin-right
  • margin-top
  • overflow
  • padding
  • padding-bottom
  • padding-left
  • padding-right
  • padding-top
  • text-decoration
  • text-indent
  • vertical-align
  • width

Comme avec la plupart des choses dans WordPress, cette liste est filtrée! Vous pouvez y ajouter display comme suit pour que votre code fonctionne comme prévu:

add_filter( 'safe_style_css', function( $styles ) {
    $styles[] = 'display';
    return $styles;
} );
12
Matthew Boynes