SVGファイルをテンプレートで出力しようとしていますが、出力をエスケープする必要があるとPHPCSから指示されています。そこで私はKSESを試しましたが、viewbox属性を含めたくないようです。
$allowed_html = array(
'svg' => array(
'xmlns' => array (),
'viewBox' => true
),
'path' => array(
'd'=> array(),
),
);
wp_kses(file_get_contents( $logo ), $allowed_html )
なぜこれがうまくいかないのですか?
私が答えを探していたときにあなたの質問を見つけました。私はもう少しwp_ksesを試してみましたが、引数の小文字のviewbox
が問題を解決するようです。 SVGの実際の属性を小文字にする必要はありません。引数wp_kses()
だけです。
これはあなたが必要とする以上のものかもしれませんが、これが私が今使っているものです:
<?php
$kses_defaults = wp_kses_allowed_html( 'post' );
$svg_args = array(
'svg' => array(
'class' => true,
'aria-hidden' => true,
'aria-labelledby' => true,
'role' => true,
'xmlns' => true,
'width' => true,
'height' => true,
'viewbox' => true, // <= Must be lower case!
),
'g' => array( 'fill' => true ),
'title' => array( 'title' => true ),
'path' => array( 'd' => true, 'fill' => true, ),
);
$allowed_tags = array_merge( $kses_defaults, $svg_args );
echo wp_kses( $rich_text_that_might_include_SVGs, $allowed_tags );