長いタイトルを省略して表示するメモ #wordpress

シングルページだと全文表示にしているから、特に用途はないのだけど、表示する場所によっては長いタイトルを省略したいときがあります。

そんなときに、タイトルの省略をどうやってやるのかを調べたところありました。

(参考)
blow-in:WordPress 記事タイトルの文字数が多い場合は文字を省略(制限)する

blow-inさんからソースを引用しました。

引用したソースから何をしているのかをメモ&勉強

普通だったら、テンプレートタグの<?php the_title( ); ?>で引っ張ってくる部分を変更するみたいですね。

<?php if( ) { } else { } ?>で条件分岐をする

<?php?>の中に条件分岐する書き方がいまいちよくわかってなかったので、これは勉強になります。なるほど、そうやって分岐させるのかぁ。

<?php if( ): ?>~<?php else: ?>~<?php endif; ?>に慣れていたので、改めて確認していみると面白いです!

mb_strlen( )で文字数をカウントする

引用してきたソースでは、mb_strlen($post->post_title)>20となっていましたので、mb_strlenでタイトルの文字数をカウントしているんだと思います。

$post->post_titleは、「$postにポストタイトル(投稿のタイトル)を入れる」に当たるものなので、$post->post_title)>20というのは、「このポストタイトルが20文字より大きい時」という意味ですね。

20のところでカウントする文字数を制限しているようなので、ここをいじれば文字数のカウントを好き放題できますね。

<?php if( ) {ifの条件通りだったら } else {違ったら } ?>という感じ?

if( )のすぐあとの{ }はif( )で出した条件通りだったらということでしょうね。今回の場合だと$post->post_title)>20(このポストタイトルが20文字より大きい時)だったら、実行する内容に当たるのだと思います。

それで実行するのが、$title= mb_substr($post->post_title,0,20) ; echo $title. ・・・ ;になるわけか…

$title= mb_substr($post->post_title,0,20)というのは、「$titleは、$post->post_titleをカウント(mb_substr)して20文字にしたもの」くらいの意味ですかねぇ。
それから、echo $title. ・・・; で、「$titleと・・・を表示する」としている・・・?
ということは、・・・の部分を別のものに置き換えたり、そもそも尻切れにしたりとかバリエーションが変えられるわけですね。

そうすると、else { } の中身のecho $post->post_title;は 「ポストタイトルを表示する」になるのかなぁ。

今回のまとめ

◆<?php if( ) {ifの条件通りだったら } else {違ったら } ?>で条件分岐をする
◆mb_substr( )で文字数をカウントする


Back to Top