picture要素のsrcsetでWPのショートコードが効かない仕様を回避する

少しバージョンの古いWordPressを触る機会があったときにハマったので今後のために書き残します。

WordPressでホームページを作る際に、固定ページは基本的に管理画面から変更できるようにするのが一般的かと思います。
たまにpage-〇〇.phpに全部入れたままってことがありますが、よくないです。WordPressを使うメリットである管理画面から更新できるって部分を台無しにしてます。

それはさておき、今回の内容です。

srcsetに管理画面からショートコードが効かない

カスタムHTMLを使ってHTMLを埋め込んだ際に、ファイルのパスを補完する必要があります。
その際にショートコードを使ってパスを保管すると、picture要素のsrcsetやinput要素のvalueに対してパスが保管されず、そのまま出力されていました。。。

調べたところ、以下の内容で議論があっていました。

https://core.trac.wordpress.org/ticket/33134

簡単にいうと、当時のWPバージョンが対応してないよって感じ。

関数を作ってショートコード未対応の要素に対応させる

こちらの関数を使うとちゃんと変更されるようになります。

勝手に要素が削除される際も同じくこれを使うので、参考までに。

function my_wp_kses_allowed_html( $tags, $context ) {
    $tags['source']['srcset'] = true;
    return $tags;
}