【結論】HTMLタグを除去してタイトルを出力したいなら、the_title()ではなくthe_title_attribute()を使おう!
WordPressでタイトルを出力する際に、<strong>
や<span>
などHTMLタグを含む文字列がそのまま表示されてしまうことがあります。
たとえば、記事タイトルをこう設定していたとします。
<strong>重要</strong>なお知らせ
これを the_title()
で出力すると、以下のようにそのままタグ付きで出力されます。
<h1><strong>重要</strong>なお知らせ</h1>
これをプレーンなテキストで出したい場合は、the_title()
ではなく、the_title_attribute()
を使いましょう。
the_title()とthe_title_attribute()の違い
関数名 | タイトルの表示形式 | HTMLタグの扱い |
---|---|---|
the_title() | HTMLとして出力 | タグもそのまま表示される |
the_title_attribute() | 属性値として出力 | タグはすべて除去される |
the_title_attribute()
は、もともと「title属性用」に使われる関数ですが、純粋なテキストだけを出力したいにも便利です。
実際の使用例
<!-- HTMLタグ込みで出力されてしまう -->
<h1><?php the_title(); ?></h1>
<!-- HTMLタグを除去してプレーンテキストで出力 -->
<h1><?php echo the_title_attribute(); ?></h1>
フィルターで対応する方法も
より柔軟に制御したい場合は、the_title
フィルターを使って HTMLタグを除去する方法もあります。
function strip_tags_from_title( $title ) {
return wp_strip_all_tags( $title );
}
add_filter( 'the_title', 'strip_tags_from_title' );
この方法なら、テーマのテンプレートファイルを変更せずに、the_title()からHTMLタグを削除できます。
まとめ
WordPressで the_title()
を使ったときに、タイトル内のHTMLタグまでそのまま出力されて困っているなら、the_title_attribute()
を使えば簡単に解決できます。
また、フィルターフックを使えば、より柔軟に処理をコントロールすることも可能です。
「プレーンなタイトルを出したい」なら、the_title()
以外の方法もぜひ検討してみてください。
コメント