WordPress記事のタイトルに<?phpを入れるとタイトルが切れる




この記事は最終更新日から2年以上経過しています。

普通は使わないとは思いますが、たまたまタイトルに<?phpを含めたらタイトルがおかしくなったのでその現象と対策についてまとめておきます。

現象

記事タイトルに「<?php」を含めたタイトルを登録すると<?phpがタグと認識され、「<?php」以降の文字が消えてしまう現象が発生します。
例えばタイトルを

「PHPの開始タグは[<?php、終了タグは?>]」

にした場合、

「PHPの開始タグは[]」

と表示されてしまいます。
また、

「PHPの開始タグは[<?php、終了タグは]」

というふうに終了タグを入れない場合、

「PHPの開始タグは[」

と開始タグ以降が全て消えてしまいます。
本現象はWordPress4.9.9、5.02のテーマTwenty Seventeen」で確認しています。
なお、本文についてはビジュアルモードで投稿して入れば自動でHTMLエンコードされるので記事詳細ページなどでも正常に表示されます。

回避策

テンプレートのタイトルタグをthe_title()で出力している場合、esc_html(get_the_title())とすることで「<」が「>」にHTMLエンコードされ、意図した内容でタイトルが表示されます。