web-dev-qa-db-ja.com

デフォルトのWordpressページビューがforce_balance_tagsを使用しないのはなぜですか?

私はデフォルトのWPテーマが投稿の抜粋をリストするために force_balance_tags を使用していることに気づきました。こうすれば、誰かが以下のような投稿を書いたときに、それが大きなhtml破損を引き起こすことはありません。

<div><b>This is an excerpt. <!--more--> and this is more text... </b></div>

すべてを太字にしてdivを壊す代わりにタグを閉じます。

デフォルトのテーマで、通常のワードプレスのページがデフォルトでこれを行わないのはなぜですか?そうすれば、壊れたページのコンテンツは以下のようになります。

</div></div> now text is not where it's supposed to be </div> unmatched tags

予期しない動作を引き起こすことはありません。

これは見落としでしたか、それともページでforce_balance_tagsを使用するときに壊れる特定のものがありますか?

6
NoBugs

force_balance_tags()は本当に安全な関数ではありません。 HTMLパーサーを使用するのではなく、高価な可能性のある正規表現を使用しています。抜粋の長さを制御する場合にのみ使用してください。そうでなければ、メモリの問題や あいまいなバグ にぶつかる可能性があります。

もう1つの問題は、関数が単一タグと入れ子になったタグのために2つのハードコードされた要素のリストを使用することです。 WordPressがそのようなリストを使用する 複数の場所 があり、それらは同期していません。そのため、これらのリストに含まれていない要素を使用したり、入れ子の動作を変更したりすると、誤ったマークアップが発生する可能性があります。

6
fuxia