the_title_attribute()
現在のタイトルをサニタイズして取得・表示する
2023/10/20

the_title_attribute()
は投稿のタイトルを取得・表示する時にサニタイズする WordPress のテンプレートタグです。タイトルに含まれるHTMLタグを削除したい場合によく使います。
【参考】サニタイズとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
the_title_attribute()
はPHPの関数 esc_attr()
および strip_tag()
を使用してHTMLタグを取り除いています。もし the_title()
を使用して同様のPHPコードを記述をしているなら、このテンプレートタグで代替できます。
使い方
【構文】
the_title_attribute( $args = '' )
the_title_attribute(タイトル属性の引数。クエリ文字列・連想配列で指定可能);
【返り値】引数 ‘echo’ が「true」の場合は何も返さず、「false」の場合はタイトル。
ループ内で使用。
パラメーター
-
$args (array | string)オプション
タイトル属性の引数。
【初期値】 なし(デフォルトで設定されている引数はソースコードを参照)
-
before (string)
タイトルの前に追加するテキスト。
-
after (string)
タイトルの後ろに追加するテキスト。
-
echo (bool)
タイトルを出力するか値を返すだけか。初期値はtrue。
true : 取得して出力。
false : 値を返すのみ。
-
post (WP_Post)
タイトルを取得する投稿オプジェクトまたはID。初期値は現在の投稿。
-
パラメーターを指定する際はクエリ文字列タイプでの記述も可能で「&」でつなげて一気に書くことができます。クエリ文字列での指定の場合、 false なら echo=0
、true なら echo=1
といった数字での指定になります。
<?php the_title_attribute('before=タイトル:&after=&echo=1'); ?>
連想配列の場合は array()
の記述もお忘れなく。
<?php the_title_attribute(array('before' => 'タイトル:' , 'after' => '' , 'echo' => true)); ?>
パラメーターで文字列を指定する際HTMLタグを入れても削除されます。
the_title との違いと使い分け方
the_title_attribute()
は the_title()
とほぼ同じように機能しますが、HTMLタグを出力するかどうかの違いがあるので、使い分けが必要な場合もあります。
例えば以下のようにページタイトルに改行やテキストのスタイルをつけるために、brタグやspanタグなどつけた場合。
タイトルに改行をつける<br>ここで<span style="color: blue;">改行</span>する
このタイトルを表示させる際に the_title()
を使用すると、改行や指定したスタイルが出力されます。
しかし特定の場所ではこれらをなくしたいこともあると思います。
またページへのリンクを設定するaタグのtitle属性にタイトル名を使用したり、imgタグのalt属性につけたい場合もあると思います。HTMLタグの属性にタイトルを設定する場合も <br>
といったHTMLタグは取り除いておきたいところです。
このような時には the_title()
を使って別途HTMLを削除するためのコードを記述するより the_title_attribute()
を使った方が簡単です。どこにそのタイトルを使用するのか、どのような表示をさせたいかによって使い分けていきましょう。
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute([ 'before'=>'記事:', 'after' => 'へのリンク' ]); ?>">
<?php the_title(); ?>
</a>