2016-04-22 7 views
2

私はこのスニペットを使用しています。サニタイズコールバックワードプレスを使用するとaria-hidden = "true"が削除される理由

function html_sanitize_text($input) { 
    return wp_kses_post(force_balance_tags($input)); 
} 

私はWordpressのカスタマイザーでhtmlをsanitzeするためにこれを使用しています。その後、リフレッシュ - - カスタマイザーで私の変更を保存するときに、このテキストフィールド内の

HTMLは<i class="fa fa-laptop" aria-hidden="true"></i>

ですその後、カスタマイザー内のこのフィールドに戻って、Wordpressのストリップ/はaria-hidden="true"を削除します。

理由は何ですか?これを回避する方法は?

おかげ

+1

wp_ksesを使用していない理由は何ですか? http://codex.wordpress.org/Function_Reference/wp_ksesあなたはその方法を無視するものを通過することができ、それはあなたのアリア隠しコードを剥奪しないでください –

+0

全く理由はありません...何が最善の方法だったか分からなかったhtmlを表示し、それをサニタイズする。 @SimonPollard – breezy

+1

これを行えば、あなたはその機能でより多くのコントロールを持つことができます。もしあなたが助けを必要とするなら、私は叫び声をあげます:) wp関数の多くは、人生を楽にしたいときに他人のバリエーションですが、いくつかのコントロール。 –

答えて

3

あなたはwp core pagについてwp_kses_postに行く場合は、それが唯一の「許可するHTMLタグとポストコンテンツ」を可能にすることを言及しています。

さらに調査すると、kses.php fileを見ると、許容されるタグと属性に関するセクションにはaria-hiddenが含まれていないので、関数によってhtmlから削除されたものと見なします。

あなたの入力を消毒することに関しては、単にmysqli_real_escape_string()this postに関して)で十分ではありませんか?

+0

ありがとう。あなたの情報は私の問題解決のために役立ちました。 – breezy

+1

問題ないです。喜んで助けてください。 – Wold

0

私はこの機能で私の問題を解決しました。それが良いかどうか訂正してください。

function html_sanitize_text($input) { 

    $filtered = wp_kses($unfiltered, $allowed_html, $allowed_protocols); 

    $allowed_html = array(
     'aria-hidden' => array(), 
     'i' => array(
      'class' => array(), 
      'aria-hidden' => array() 
     ), 
    ); 

    return $input; 
} 

私の変更を保存するとき、これはカスタマイザーで、私の入力フィールドからaria-hidden="true"を取り除くしません。

Wordpressでフォントの素晴らしいライブラリを使用すると、将来この問題が発生する場合があります。

関連する問題