【WordPress】投稿のタイトルを変更して表示・出力|the_title

WordPressでサイトを作成していると、投稿のタイトルを一定のルールで変更して出力したい場合があると思います。

今回は、そのような場合に使用できるソースコードの例となります。例では、フィルターフックthe_titleを使用し、投稿のタイトルを変更して表示します。

投稿のタイトルを変更し出力する例

フィルターフックthe_titleでタイトルを変更

例では、フィルターフックthe_titleを使用し、「投稿」にタグスラッグ「book」又は「wordpress」が設定されている場合、投稿のタイトルの前にそれぞれ【書籍紹介】、【WordPress】を挿入します。ソースコードは以下となり、functions.phpに記述します。

function my_title( $title ){
	if ( has_tag( 'book' )) {
		return '【書籍紹介】' . $title ;
	} elseif ( has_tag( 'wordpress' )) {
		return '【WordPress】' . $title ;
	}
	return $title;
};
add_filter( 'the_title', 'my_title');

タイトルの出力

タイトルを表示するには、以下の関数などがあり、表示したい場所に記述します。以下の2つの例は、共にh1要素の内容をタイトルとして出力する例となります。

the_title( '<h1 class="page-title">', '</h1>' );
echo "<h1 class='page-title'>" . get_the_title() . "</h1>";

変更したタイトルの適用範囲について

上記例の場合、フィルターフックthe_titleを使用しタイトルを変更すると、ヘッダー等に設定しているメニューのタイトルまで【書籍紹介】や【WordPress】が追加され変更されてしまいます。

それを防ぐためには、テンプレートファイル内にて、remove_filter関数とadd_filter関数を使用します。

変更したタイトルを適用したくない箇所の前にremove_filter()

まず、変更したタイトルを適用したくない箇所の前に、remove_filter関数を使い、フィルターフックを除去します。

remove_filter関数の第1引数は、除去するフィルターフック名、第2引数は、除去するフィルターフックのコールバック関数名となります。今回の例の場合は以下となります。

<?php remove_filter('the_title', 'my_title'); ?>

変更したタイトルを適用したい場所の前にadd_filter()

次に、変更したタイトルを適用したい場所の前には、add_filter関数を使い、フィルターフックを登録します。

add_filter関数の第1引数は、登録するフィルターフック名、第2引数は、登録するフィルターフックのコールバック関数名となります。今回の例の場合は以下となります。

<?php add_filter('the_title', 'my_title'); ?>

上記のように、remove_filter関数とadd_filter関数を使用することで、フィルターフックthe_titleで変更したタイトルの適用範囲を指定できます。

参考サイトなど

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。