WordPressでthe_excerpt()関数を使うと、文末に[…]をつけて投稿記事の抜粋文を表示してくれます。
その抜粋の文字数を自由に変更して、かつスマホとPCそれぞれ別の値を設定したい時の書き方をまとめました。
目次
まず「WP Multibyte Patch」の有効化
the_excerpt()で抜粋されるデフォルト文字数は55単語。
ただ、 日本語のように半角スペースで区切らない言語だと「55単語」をうまく判定して抜粋できず、本文のほとんどが出力されてしまうことがあります。
そのため、「WP Multibyte Patch」というプラグインをインストールして有効にすることが推奨されています。
WP Multibyte Patchを有効化すると、日本語の抜粋文字数はデフォルトで110文字になります。
function.phpに下記を記述
WP Multibyte Patchの有効化が完了したら、function.phpに下記の記述をします。
抜粋の文字数をPCとスマホそれぞれに設定
<?php
// 抜粋の文字数をPCとスマホそれぞれに設定
function twpp_change_excerpt_length( $length ) {
return ( wp_is_mobile() ) ? 30 : 150;
}
add_filter( 'excerpt_length', 'twpp_change_excerpt_length', 999 );
?>
上記の場合、スマホやタブレットでの閲覧なら30文字の抜粋、パソコンなら150文字の抜粋を行います。
サイトに合わせて、自由に数値を変更してください。
抜粋の文末の[…]を変更する
ついでに、抜粋の文末の省略記号を変更してみます。
シンプルに[ ]を取りたい場合は、
<?php
// 抜粋の省略記号を変更する
function twpp_change_excerpt_more( $more ) {
return ' ...';
}
add_filter( 'excerpt_more', 'twpp_change_excerpt_more' );
?>
リンクを追加したい場合は、
<?php
function twpp_change_excerpt_more( $more ) {
$html = '<a href="' . esc_url( get_permalink() ) . '">[詳しく見る]';
return $html;
}
add_filter( 'excerpt_more', 'twpp_change_excerpt_more' );
?>
とすると、抜粋の文末の省略文字に投稿記事のリンクをつけることができます。
注意点
関数wp_is_mobileには、スマートフォンだけではなくタブレット端末も含まれるので注意してください。