カテゴリー
WordPressカスタマイズ

WordPress の自動抜粋の文字数とリンク文字の変更

WordPress では簡単に記事の抜粋表示ができます。
トップページやカテゴリージページなどで全文表示されている状態ならば、テンプレート上のthe_content()the_excerpt()に変更すれば抜粋表示にできます。
抜粋のイメージは以下のようになります。

WordPress Codex は、ウェブログシステム WordPress の公式オンラインマニュアル(ドキュ […]

今回は抜粋の文字数や文末の表示などの表示をカスタマイズします。

WordPress の抜粋をカスタマイズ

まず、抜粋の定義について再確認しておきます。
前述のthe_excerpt()は投稿画面の抜粋欄に入力があれば、文字数に関係なく全文表示、ない場合は本文から自動抽出されます。
つまり、ここでいう文字数の制御は抜粋欄ではなく、本文抽出になります。

デフォルトの状態

素の状態の WordPress では、文字数ではなく、 55 という単語数で制御が行われます。
このため、スペースで区切らない日本語では適切に制御できません。

WP Multibyte Patch を有効にする
日本語の場合は WordPres に同梱の「 WP Multibyte Patch 」を利用します。
このプラグインは日本語環境でメール送信・トラックバック受信・ピンバック受信や excerpt 関数などをうまく処理できるように修正してくれます。
サイト内の検索語句スペースも適切に扱ってくれるようなります。
抜粋に関してはデフォルトで2バイト対応の 110 文字となります。

WordPress Codex は、ウェブログシステム WordPress の公式オンラインマニュアル(ドキュメント)であり、 WordPress 知識の百科事典を目指しています。 進化し続ける WordPress に合わ […]

抜粋の文字数を指定する

WP Multibyte Patch で指定する
抜粋の文字数を任意の値とするためには、プラグインで用意されるフィルタで指定します。
プラグインを直接編集する場合はwp-multibyte-patch.phpより下記の excerpt_mblength の値を任意の文字数に変更します。
(ファイル内を excerpt_mblength で検索するとすぐに見つかります)

// Do not edit this section. Use wpmp-config.php instead.
var $conf = array(
'excerpt_mblength' => 110,

functions.php で指定する
ただし、上記のプラグインを修正する方法ではアップデートの際などにデフォルトに戻ってしまいます。
これを防ぐにはお使いのテーマのfunctions.phpに以下を追加します。
return 400 の部分が文字数指定値です。

<?php //WP Multibyte Patch の文字数指定
function new_excerpt_mblength($length) {
  return 400;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
?>

※テーマ内で指定することでプラグインのアップデートの際にも対応できますので、こちらの方がお勧めです。

抜粋の文末を変更する

同じく、functions.phpにて WP Multibyte Patch をコントロールして抜粋文未を変更するバリエーションを紹介します。

抜粋末を「…」から「・・・」に変更

<?php //抜粋の文末変更パターン1function new_excerpt_more($more) {
  return '・・・';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

さらに抜粋末を【続きを読む】のリンクに変更

<?php //抜粋の文末変更パターン2function new_excerpt_more($post) {
  return  '・・・'. '<a href="'. get_permalink($post->ID) . '">' . '【続きを読む】' . '</a>';  
}  
add_filter('excerpt_more', 'new_excerpt_more');
?>

モバイルと PC で抜粋の表示数を変える

最後にモバイルを判定するwp_is_mobile()という関数でthe_excerpt()で出力する抜粋の文字数を変えてみます。

<?php //モバイルと PC で個別に文字数指定
function new_excerpt_mblength($length) {
  return ( wp_is_mobile() ) ? 50 : 500;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
?>

上記はモバイルでは 50 文字、 PC では 500 文字という指定になります。
これは表示エリアの小さいモバイルでは抜粋の文字数を減らしたい、しかし、それでは PC で間が抜けてしまうなんていう場合に使える小ネタです。

profile image

執筆:R3098

WEB サービス構築・監修が生業です。 WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

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

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。