【WordPress】the_titleで出力されるHTMLタグを削除する方法|the_title_attributeの使い方

WordPress

【結論】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()以外の方法もぜひ検討してみてください。

この記事を書いた人
管理人

2012年にWebデザインの勉強を始め、2013年より制作会社に勤務。
これまでに500件以上のWebサイト制作・運用に携わってきました。
現在も制作会社に勤務しながら、Webデザインスクールのトレーナーとしても後進の育成に取り組んでいます。
WordPressやデザインの実践的なノウハウを、初心者にもわかりやすく発信できるよう試行錯誤しています。

管理人をフォローする
WordPress
管理人をフォローする

コメント

タイトルとURLをコピーしました