タイトルや記事本文などを指定した文字数で省略して表示したい時は、wp_trim_words関数を使うと便利です。
以前、「WordPressの記事一覧を出力するループ内でタイトルを省略して表示する方法」という記事を書きました。この記事の中では、mb_strlenで文字数を比較してmb_substrで省略する方法を紹介していましたが、wp_trim_wordsを使った方がだいぶ簡単だということを最近知りました。
というわけで、wp_trim_wordsの使い方をご紹介したいと思います。
長い文字列を省略して表示するための関数「wp_trim_words」
wp_trim_wordsでは、以下のように第3引数まで指定することができます。
1 | <?php $trimmed = wp_trim_words( $text , $num_words , $more ); ?> |
$text | 省略対象の文字列。初期値なし |
$num_words | 単語数(WP Multibyte Patch 有効時は文字数)。初期値は55(WP Multibyte Patch 有効時は 110) |
$more | 省略した文字列の後ろに追加する文字 |
例えば、記事一覧のループ内でタイトルを20文字で省略したい場合は、以下のように記述します。
1 | <?php echo wp_trim_words( get_the_title(), 20 , '…' ); ?> |
20文字以降は省略し、…(三点リーダー)を追加しています。
ループ全体としては、以下のようになります。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | <?php $paged = (get_query_var( 'paged' )) ? get_query_var( 'paged' ) : 1; $args = array ( 'paged' => $paged , 'posts_per_page' => 5, ); $wp_query_post = new WP_Query( $args ); ?> <?php if ( $wp_query_post ->have_posts()): ?> <ul> <?php while ( $wp_query_post ->have_posts()): $wp_query_post ->the_post(); ?> <li> <span class = "date" ><?php the_time( 'Y/m/d' ); ?></span> <span class = "title" ><a href= "<?php the_permalink(); ?>" ><?php echo wp_trim_words( get_the_title(), 20 , '…' ); ?></a></span> </li> <?php endwhile ; ?> </ul> <?php else : ?><p>No items</p> <?php endif ; wp_reset_postdata(); ?> |
あとがき
かなり簡単に省略できちゃいますね。タイトルだけでなく、色んな場面で使えそうです。
wp_trim_wordsの詳細については、Codexをご参照ください。