Почему wp_kses не сохраняет атрибуты стиля, как ожидалось?

Я хочу сохранить атрибут стиля. $ str – всего лишь пример, вот мой код:

$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 фактически получит кучу html-тегов и атрибутов из сообщения. Затем оттуда я хочу вычеркнуть все теги и атрибуты, оставив только теги div и атрибуты стиля и названия

Спасибо, MMK.

Это старый вопрос, но вот ответ для будущих поколений:

WordPress проверит стили против белого списка и все равно будет стирать атрибут style если ни один из стилей не будет безопасным. Белым списком по умолчанию является:

  • 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

Этот список, как и большинство вещей в WordPress, фильтруется! Вы можете добавить к нему display следующим образом, чтобы ваш код работал должным образом:

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