ページに検索キーワードを出力するときのesc_html( get_search_query() )とthe_search_query()の使い分け
タグ:
結論
ページに検索キーワードを出力する場合はthe_search_query()
ではなく、esc_html( get_search_query() )
を使用するのがより厳密です。
経緯
あるWordPressの本を読んでいたら、検索結果ページで検索キーワードを表示するのにesc_html( get_search_query() )
を使用していました。
「the_search_query()
使えばよくない?」と思ったので、この2つの違いを調べてみました。
出力結果は同じだが、それ自体が通るフィルタとエスケープ処理の際に適用するフィルタが異なる
esc_html( get_search_query() )
とthe_search_query()
はどちらも検索キーワードを出力します。両者の出力結果は同じですが、若干異なる部分もあるようです。
the_search_query()
は内部的にesc_attr()
を用いてエスケープ処理しています。esc_html()
とesc_attr()
は機能的に同じですが、値を返す前に適用するフィルタが異なるとのこと。
また、get_search_query()
はget_search_query
フィルタを通すが、the_search_query()
はthe_search_query
フィルタを通すという違いもあります。
よって、esc_html( get_search_query() )
とthe_search_query()
は、検索キーワードを表示するという意味では同じですが、機能が全く同じというわけではないみたいです。
ちなみにWordPress Codexのサンプルコードでは、ページ中に検索キーワードを表示する際esc_html( get_search_query() )
を使用していました。the_search_query()
はあくまでinput
のvalue
などの属性の中で使うもので、テキストの中に埋め込む場合はesc_html( get_search_query() )
を使う、という使い分けのようです。確かにこのような使い分けの方がより厳密ですね。
というわけで、ソースコードの粗探しをしていたらまた1つ勉強になった、という話でした。