web-dev-qa-db-ja.com

Wp_ksesがスタイル属性を期待通りに保持していないのはなぜですか?

Style属性を保持したい$ 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、ありがとう。

5
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;
} );
12
Matthew Boynes