the_title()とget_the_title()の違い

the_title()を使っているときに少し詰まったことを備忘録としてメモ。

詰まった点

投稿記事一覧を表示する際に、PHPで少し処理を実装したかったので以下のように記述しました。

PHP

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div class="article">
<?php
// PHPで少し処理
echo '<p>' . the_title() . '</p>';
?>
</div>
<?php endwhile; else: ?>
<?php endif; ?>

表示を確認してみると、以下のようにタイトルのテキストがpタグの外に出力されていました。

HTML

<div class="article">
投稿タイトル<p></p></div>
<div class="article">
投稿タイトル<p></p></div>
<div class="article">
投稿タイトル<p></p></div>

色々試してみた結果、the_title()の代わりにget_the_title()を使うか、pタグとthe_title()を別々にechoすると意図した出力になっていました。

PHP

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div class="article">
<?php
// PHPで少し処理
echo '<p>' . get_the_title() . '</p>';
?>
</div>
<?php endwhile; else: ?>
<?php endif; ?>

PHP

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div class="article">
<?php
// PHPで少し処理
echo '<p>';
echo the_title();
echo '</p>';
?>
</div>
<?php endwhile; else: ?>
<?php endif; ?>

HTML

<div class="article">
<p>投稿タイトル</p></div>
<div class="article">
<p>投稿タイトル</p></div>
<div class="article">
<p>投稿タイトル</p></div>

 

the_title()とget_the_title()の違い

the_title()はループの中で使用、get_the_title()はループの外で投稿IDを指定して使用、という認識だったのですが、the_title()はechoまで行うのに対して、get_the_title()はタイトルを返すのみという違いがあるようです。

最初のサンプルコードのようにドットで連結してechoした場合、the_title()が呼ばれた時点でechoされてしまっているため、pタグの前にタイトルが出力されていました。

あと、2番目のサンプルでも使用していますが、get_the_title()で指定する投稿IDの初期値は現在の投稿になるようなので、ループの中でもパラメータの指定をしないで使用できるようです。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930