WordPressの自動抜粋の文字数とリンク文字の変更
2014/05/12
タグ: 初心者

WordPressではthe_excerpt()関数を使うと記事の抜粋表示ができます。
トップページやカテゴリージページなどで全文表示されていれば、テンプレート上のthe_content()をthe_excerpt()に変更すれば抜粋表示にできます。
今回は抜粋の文字数や文末の表示などの表示をカスタマイズします。
WordPressの抜粋をカスタマイズ
デフォルトの状態
この抜粋の文字数はデフォルトで110文字に制限されていますが、2バイトの日本語では実質55文字となります。
抜粋のイメージは以下のようになります。
WordPress Codex は、ウェブログシステム WordPress の公式オンラインマニュアル(ドキュ […]
WP Multibyte Patchを有効にする
日本語の場合はWordPresのインストール時に同梱される「WP Multibyte Patch」を利用するとよいでしょう。このプラグインは日本語環境でメール送信・トラックバック受信・ピンバック受信やexcerpt関数・検索などをうまく処理できるように修正してくれます。
この場合も抜粋に関してはデフォルトで110文字となりますが、2バイト対応ですので、同じ条件でも下記のように抜粋のされ方は異なります。
WordPress Codex は、ウェブログシステム WordPress の公式オンラインマニュアル(ドキュメント)であり、WordPress 知識の百科事典を目指しています。 進化し続ける WordPress に合わ […]
抜粋の文字数を指定する
WP Multibyte Patchで指定する
抜粋の文字数を任意の値とするためには「WP Multibyte Patch」で指定します。
プラグイン編集→wp-multibyte-patch/wp-multibyte-patch.phpより下記のexcerpt_mblengthの値を任意の文字数に変更します。(ファイル内をexcerpt_mblengthで検索するとすぐに見つかります)
var $conf = array(
'excerpt_mblength' => 110,
functions.phpで指定する
ただし、上記のプラグインを修正する方法ではアップデートの際などにデフォルトに戻ってしまいます。
これを防ぐにはお使いのテーマのfunctions.phpに以下を追加します。
return 400の部分が文字数指定値です。
function new_excerpt_mblength($length) {
return 400;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
?>
※テーマ内で指定することでプラグインのアップデートの際にも対応できますので、こちらの方がおすすめです。
抜粋の文末を変更する
同じく、functions.phpにてWP Multibyte Patchをコントロールして抜粋文未を変更するバリエーションを紹介します。
抜粋末を「...」から「・・・」に変更
抜粋末を【続きを読む】のリンクに変更
function new_excerpt_more($more) {
return '・・・';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>
上記の組み合わせ(・・・【続きを読む】でリンク)
function 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()で出力する抜粋の文字数を変えてみます。
//モバイルとPCでWP Multibyte Patchの文字数を個別に指定
function new_excerpt_mblength($length) {
return ( wp_is_mobile() ) ? 50 : 500;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
?>
上記はモバイルでは50文字、PCでは500文字という指定になります。
これは表示エリアの小さいモバイルでは抜粋の文字数を減らしたい、しかし、それではPCで間が抜けてしまうなんていう場合に使える小ネタかもしれませんね。