XMLのエスケープ処理をする関数esc_xml()が、WordPress5.5から追加されました。
『今までなかったの?』と思うのはボクだけでしょうか? それぐらい前からあってもおかしくないくらい使う場面が多そうです。
(サイトマップ作成機能の追加からの派生みたい。)
WordPressにはいろいろなエスケープ処理のfunctionが用意されています。
esc_html(), esc_js(), esc_attr() ...
これまでXML用があってもおかしくないのにありませんでした。WordPress.5.5から追加されたサイトマップ作成機能に合わせて用意されたそうです。
だからといって他で使えないことはありません。esc_xml()はXMLエスケープ処理の汎用functionです。
$escape_xml = esc_xml( $xml );
echo $escape_xml;
エスケープ処理が物足りない、修正したいときのフィルターもあります。
add_filter( 'esc_xml', function( $safe_text, $text ) {
// $safe_text: WP標準エスケープ後のXML
// $text : エスケープ前のXML
// ここにエスケープ処理を書く
return $safe_text;
}, 10, 2 );
おまけ
esc_html(), esc_js()も使い方は同じです。フィルターもフィルター名がちがうだけでパラメータも同じ。
esc_html() | 'esc_html' |
esc_js() | 'js_escape' |
jsのフィルター名がfunction名とちがうことに注意。以前のesc_js()はjs_escape()でした。
function名は変わりましたがフィルター名はそのまま残っています。
(js_escape()は使用不可。)
WordPress.orgリファレンス