制作会社から制作会社じゃない会社に転職が決まりました。制作会社で学んだことを残らず記事にしたいと思います。

パンDKOTORI Blogの公式キャラクター「パンD」です。
コーディングWordPress「the_excerpt()」をカスタマイズ[WordPress]

「the_excerpt()」をカスタマイズ[WordPress]

2014年02月17日WordPress 便利コード PHP 
「the_excerpt()」をカスタマイズ[WordPress]記事のアイキャッチ画像

WordPressの「the_excerpt()」が使いづらいのでカスタマイズしました。引数で表示する抜粋の文字数を指定できます。表示する抜粋の最後に付けるテキストを簡単に変更できます。特殊文字が中途半端に表示されたりしません。

まえがき

みなさん、WordPressの投稿記事の抜粋を表示する時はどうしてますか?
WordPress標準で用意されている「the_excerpt()」を使用するという方も多いのではないでしょうか。

「the_excerpt()」を簡単に説明します。
「the_excerpt()」は記事の抜粋を […](角括弧+三点リーダー)を最後に付けて表示します。記事編集画面の「抜粋」に何かしら入力があればそれを、入力が無ければ記事の本文から110文字(WP Multibyte Patchが有効な場合)を抜粋として出力します。

しかし、この「the_excerpt()」はそのままだと使いづらい!
というのも表示する抜粋の文字数や抜粋の最後に追加する文字列を簡単に編集することができないのです。
普通だったら関数の引数で設定できても良さそうなものなのですがね。

抜粋の文字数や抜粋の最後に追加する文字列は、シチュエーションによって結構かわってきますよね?
てか、変えたいですよね!?

さらにいうと、「the_excerpt()」は特殊文字( 等)も一文字づつカウントされるので、特殊文字が中途半端に切れた場合、抜粋が「○○○&nb」とか表示されることがあるのです笑

という事で「the_excerpt()」より遥かに使いやすく特殊文字も表示されないし追加する文字も簡単に変更できる、オリジナル関数を作りました。
functions.phpにコードを追加するだけなので試してみてください。

抜粋の文字数を引数で指定できる関数をfunctions.phpに追加する

以下のコードをfunctions.phpに追加してください!

function kotoriexcerpt($length) {
global $post;
$content = mb_substr(strip_tags($post->post_excerpt),0,$length);

if(!$content){
$content =  $post->post_content;
$content =  strip_shortcodes($content);
$content =  strip_tags($content);
$content =  str_replace(" ","",$content); 
$content =  html_entity_decode($content,ENT_QUOTES,"UTF-8");
$content =  mb_substr($content,0,$length);
}
return $content;
}

抜粋を表示したいところで下記のコードを書きます。
例えば抜粋を200文字表示したい場合

<?php echo kotoriexcerpt(200); ?>

解説していきます。
まず記事編集画面の「抜粋」に記入があるかどうかを判断します。
記入がある場合、「抜粋」のテキストが返ってきます。
記入がない場合は

  1. 「$content = $post->post_content」で記事の本文を取得
  2. 「strip_shortcodes($content)」で取得した本文からショートコードを取り除く
  3. 「strip_tags($content)」でHTMLタグを取り除く
  4. KoToRiの場合、クライアントが&nbsp;を本文中に使用していたため抜粋に変にスペースが入ってしまっていたため「str_replace(“&nbsp;”,””,$content)」で&nbsp;を削除しています。
    必要なければこの8行目は消してください。
  5. 「html_entity_decode($content,ENT_QUOTES,”UTF-8″)」で特殊文字が中途半端に抜粋に入ってこないように、本文中の特殊文字をデコードします。
  6. 「mb_substr($content,0,$length)」で本文から引数で指定した文字数だけ抜き出します。

抜粋の最後に追加する文字の指定

この「kotoriexcerpt()」関数は抜粋のテキストのみを返すので、最後に文字を追加したい場合は普通に追加するだけです。

<?php echo kotoriexcerpt(200); ?>...<a href="<?php the_permalink(); ?>">続きはここをクリックしてね</a>

こんな感じで指定するだけです。
簡単ですね。

まとめ

抜粋の使い方も色々ありますよね!

普通に記事編集画面の抜粋項目を使ったり
本文中に「more」クイックタグを挿入して「the_content()」タグで出力したり
普通に「the_excerpt()」使ったり。

その時々で対応は変わってくるかと思いますが「the_excerpt()」を普通に使うくらいなら
今回紹介した「kotoriexcerpt()」関数を是非利用してもらいたいと思います。

「kotoriexcerpt()」関数に関してなんか盲点があったら教えてください。

今回のこの記事はクライアントが本文にショートコードつかったり特殊文字使ったりと、あまり普通のお客様がしないようなことを色々なことをしてくれたお陰で誕生しました!
こういうの大事ですね!
ブログのネタも増えてマンセーです。
ありがとうございます。

シェアするみんなシェアしてね

フォローするフォローする

いつもKOTORI Blogをご覧いただきありがとうございます。Facebook、Twitterを通じて、皆様と交流していき色んな情報を共有していければな~と思ってます。お気軽に登録してください!

基本フォロー返します。

RSSを登録する

RSSはこちらから。

follow us in feedly

Feedly使ってる人はこちらから。

Buy me a Beer

動く!パンDのLINEスタンプ
好きな人にアプローチスタンプ
パンDのLINEスタンプ

関連する記事関連する記事も読んでみてね

コメント