WordPress タイトルや本文の表示文字数を制限する方法について

こんにちは。今日は、最近になって本格的に学習し始めたWordPressで躓いた点を忘備録を兼ねつつアウトプットしていきたいと思います。そんな訳で、本日のタイトルは

タイトルや本文の表示文字数を制限する方法について

です。本題へ入る前に、私の現時点の学習進捗状況やスキル的なところも書いておくと、2020年11月初めからプログラミングの学習を開始(入り口はRubyでした)し、PHPも少しかじりながら今年の2月頭に

やっぱりWeb制作がしたい!

ってことでフロント(HTML、CSS、JavaScript(jQuery))の学習を本格化させました。なので、WordPressは学習を開始してまだ1週間も経っていないくらいの超絶ひよっこですので悪しからず。複数ページの静的サイトは作れるようになったので、そこからWordPressを使って独自テーマで一から構築しているのが現段階って感じです。

 

ということで本題。というか結論。

<?php echo wp_trim_words(get_the_title(), 40, ‘…’); ?>
を書けば、タイトルが40文字を越えた場合に「…」を付けて表示してくれる。これだけではただの忘備録なので、ちゃんと原典にあたります。

コーデックスによると、

 <?php $trimmed = wp_trim_words( $text, $num_words, $more ); ?>

という用法が書いてあって、

「テキストの先頭から指定された数の単語を切り出し、切り出した文字列を返す」

とのこと。この関数は引数が3つ取れるみたい。

  • 第一引数の「$text」で、長さを調整したい文字列を指定
  • 第二引数の「$num_words」で、単語数または文字の長さを指定(※省略すると55文字になる(半角なら110文字))
  • 第三引数の「$more」で、文字列の長さを調整した際に追加する文字列を指定(※省略するとnull)

なるほど。だから、第一引数に「get_the_title()」、第二引数に「40」、第三引数に「…」でOKということでした。

そして、返り値は

「長さを揃えた文字列」

と。そうじゃなきゃ困るよね。この時、第3引数を省略すると、調整時に追加される文字列は「…」になるらしい。ということは、第3引数に敢えて「…」を書く必要はないということでした。新たな発見。だから、第3引数に

「…続きはこちら」

とか入れても良いということですね。よくあるパターン。

この関数は「長さを揃えた文字列を返してくれる」だけだから、別途「表示」させるために「echo」してあげる必要がありますよと、そういう訳ですね。「取得」はできるけど「表示」まではしてくれないから、表示の処理まで書く必要があるというのも気にしておかないといけないですね。理解できた気がする。

 

併せて

 「get_the_title()」

もまとめておこう。ついでの忘備録が知識の幅を増やしてくれるはず。

これもコーデックスによると

 <?php echo get_the_title( $ID ); ?>

という用法で、これで現在の投稿のタイトルを表示できるというわけ。

投稿IDを元に投稿タイトルを「取得」する関数だから、別途「表示」させる必要があるパターンです。使い方としては、ループ処理の中でも外でもどっちでも使えるけど、ループの外で使うならIDを指定する必要があるみたい。今回は投稿のループ処理の中で使ったから、IDを指定する必要はなし。

$IDには、

投稿のID、もしくはタイトルを取得する投稿を特定するオブジェクトを指定

してあげる必要があります、とのこと。

戻り値は、

「投稿のタイトル」

そうじゃなきゃ困る。使う意味がない。

 

こんなもんですね。ただコードをコピペして終わりじゃなくて、改めて自分で調べてアウトプットするのは頭の中を整理できるし見返せるしで、良いことしかない!ですので、しばらくはこういう投稿が続くかもしれません。これも広い意味でライフスタイルのTipsということで、ブログのテーマとして逸れてはいないはず!(やや強引)

そんな感じで今日はこれでおしまい!また他の記事で会いましょう。