WordPressの抜粋文を使いやすくする

2017/05/23 15:19
LINE

WordPressを使用したウェブサイトの場合、「コンテンツの一覧は◯◯文字、サイドバーのオススメ記事は◯◯文字」と、個別に抜粋を文字数指定したいことはよくあります。

WordPressには標準で抜粋を表示するthe_excerpt()という関数が用意されていますが、この関数は表示文字数の制限が引数で指定できないため、抜粋を表示する場所によって文字数の指定を行いたい時などに、そのまま使用することができません。

そこで今回、the_excerpt()の代わりとなる、個別に抜粋を文字数指定できる関数をご紹介します。

事前準備

『WP Multibyte Patch』プラグインのインストール

WordPressは標準のままだとマルチバイト文字の処理に関して一部不具合があります。

これから紹介するthe_excerpt()の代替オリジナル関数についても、マルチバイト文字の処理が記述されていますので、正常に動作させるには『WP Multibyte Patch』プラグインをインストールして、マルチバイト文字の扱いを最適化してください。

このプラグインは日本語版WordPressには元々入っているプラグインですので、既にインストールされている場合、有効化するだけでOKです。

もし日本語版WordPress以外を使用していたり、WP Multibyte Patchをアンインストールしている場合は、インストールを行い有効化してください。

the_excerpt()の代替関数の作成

functions.phpに以下のソースコードを記述してください。

    
    function custom_excerpt($length = 110) {
      global $post;
    
      $suffix = '...';
    
      $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');
    
        if (mb_strlen($content, 'UTF-8') > $length) {
          $content =  mb_substr($content, 0, $length, 'UTF-8');
          $content .= $suffix;
        }
      }
    
      return $content;
    }
    
  

たったこれだけで、the_excerpt()の代わりとなる文字数を引数で設定できる『custom_excerpt()』関数が使用できるようになります。

また、特殊文字の処理もcustom_excerpt()には施されているため、the_excerpt()と違い、場合によって特殊文字の記述が一部表示されてしまう不具合が解消されています。

※custom_excerpt()はKOTORI blog様の以下記事の内容を参考にさせていただきました。

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

custom_excerpt()の使用方法

the_excerpt()を使用している箇所を以下に置き換えて使用します。

      
        <?php echo custom_excerpt(); ?>
      
    

文字数を制限する場合、関数に半角数字で引数を設定します。例として、抜粋を30文字に制限する記述方法は以下となります。

      
        <?php echo custom_excerpt(30); ?>
      
    
ホームページに動きをつける一歩目!JavaScriptの基本について

ホームページに動きをつける一歩目!JavaScriptの基本について

JavaScriptはブラウザ上で動作するプログラムことで、時間経過やクリックしたタイミングで画像やテキストを切り替える、ということを表現できるようになります。

custom_excerpt()の細かな仕様は以下の通りです。

  • 引数を何も指定しない場合、WP Multibyte Patchが動作している状態でのthe_excerpt()と同じく、110文字の文字制限を行います。
  • 文字数を制限するには、関数に半角数字で引数を設定します。
  • 制限した文字数に達しない場合は、そのまま表示します。
  • 制限した文字数以上の場合、文字数を制限した後、語尾に『…』が付きます。
  • WordPressの抜粋を使用した場合にも関数の文字数制限は動作します。

語尾を変更したい場合、functions.phpの$suffixの値を変えることで対応可能です。

例. 語尾を…moreに変更

      
        $suffix = "…more";
      
    

まとめ

サイトのデザイン上、ここはどうしても文字数制限したいということはよくあります。

当ブログでもそういった小さな、しかし妥協したくないこだわりがあったため、この関数を実際にいくつかの箇所で使用しています。

もし同じような悩みがございましたら、ぜひ使用していただければ幸いです。

この記事を書いた人

SEOタイムズ 編集部

SEO対策実績「20,000社」を超えるGMOソリューションパートナー株式会社がインハウスSEOに取り組む企業様・個人に向けSEO情報を発信。

"Web初心者にもわかりやすく"をコンセプトにSEO対策情報をお届けします。

ランキング

  • 週間
  • 月間
【Illustratorのパターンの作り方】初心者でも簡単!パターンの基本を教えます!
1
【Illustratorのパターンの作り方】初心者でも簡単!パターンの基本を教えます!
2022/03/25 11:00
web
2
CSSでかっこいいアニメーションを作ろう!~animationの基本~
2022/07/08 18:34
web
#コーディング
3
【GA4】平均エンゲージメント時間とは?定義と滞在時間との違いを徹底解説
2023/02/27 12:00
SEOツール
#アナリティクス
4
AIツールとは?おすすめのAIツール27選をジャンル別にご紹介
2023/05/15 12:00
SEO対策
5
WindowsでPHPを実行する! XAMPPのインストールについて
2017/02/01 16:06
web
【Illustratorのパターンの作り方】初心者でも簡単!パターンの基本を教えます!
1
【Illustratorのパターンの作り方】初心者でも簡単!パターンの基本を教えます!
2022/03/25 11:00
web
2
CSSでかっこいいアニメーションを作ろう!~animationの基本~
2022/07/08 18:34
web
#コーディング
3
【GA4】平均エンゲージメント時間とは?定義と滞在時間との違いを徹底解説
2023/02/27 12:00
SEOツール
#アナリティクス
4
CSSの基本!横並びなどフレキシブルに対応する「Flexボックス」
2021/11/15 13:46
web
5
重ね言葉、知らないうちに使っていませんか?
2022/11/22 12:00
web
#ライティング

SEOタイムズとは?

SEOタイムズとは?

SEOタイムズは、Webマーケティングに取り組むWeb担当者向けのSEO対策特化型の情報メディアです。テーマは「SEO開拓者のバイブル」。

"初心者にもわかりやすく"をコンセプトに、SEO対策に関する有益な情報を発信しています。
20,000社以上の幅広い業種の集客支援実績から得られた経験とノウハウをベースに最新の情報をお届けします!

今すぐ出来るSEO対策情報も満載。あなたのWebマーケティング戦略を成功に導きます。