WordPressのRSS Feedに「アイキャッチ画像」を追加 & moreタグまでを表示する方法

n2apps.jp RSS WordPress

WordPressのRSS feedは「全文を表示」と「抜粋のみを表示」から設定で選ぶことができます。

でも、

  • RSS Feedに「全文を表示」するのは嫌だ!
  • 一定の文字数(110文字)で区切る「抜粋」も嫌だ!
  • かといって、新規投稿時に「抜粋」を手入力するのも面倒・・・。
  • できれば、こちらが意図した区切り(more)までを表示したい。

という思いがありました。

これを叶えてくれるのが「More Feed Excerpt」というプラグイン。

このプラグインをインストールして有効化すると、moreまでの本文をRSS Feedに表示することができます。

でも、アイキャッチ画像が表示されずテキストのみ。(記事本文に画像を貼り付けていないためですが。参考記事

なので、このプラグインを少し改良することにしました。

「More Feed Excerpt」プラグインの改良

改良したい点

  • RSS Feedに「アイキャッチ画像」を追加する
  • 抜粋文の後ろに「続きを読む」リンクを表示する

修正前のソース

バージョンは、0.1.1を使用。青い部分は、修正する箇所です。

function mfe_More_Feed_Excerpt($PostBody) {

  if ( is_feed() and !get_option('rss_use_excerpt') ) {

    $FeedSplitPattern = "/(<br \/>\s)?<span id=\"more-\d+\"><\/span>/";
    $excerpts = preg_split($FeedSplitPattern, $PostBody, 2, PREG_SPLIT_NO_EMPTY);
    if ( count($excerpts) > 1 ) {
      $PostBody = balanceTags( $excerpts[0], $force = true );
    }
  }
  return rtrim($PostBody);
}

修正後のソース

赤い部分が、修正および追加した箇所です。

function mfe_More_Feed_Excerpt($PostBody) {
  global $post;

  if ( is_feed() and !get_option('rss_use_excerpt') ) {

    if(has_post_thumbnail($post->ID)) {
      $thumbnail = '<p>' . get_the_post_thumbnail($post->ID) . '</p>';
    }

    $FeedSplitPattern = "/(<br \/>\s)?<span id=\"more-\d+\"><\/span>/";
    $excerpts = preg_split($FeedSplitPattern, $PostBody, 2, PREG_SPLIT_NO_EMPTY);
    if ( count($excerpts) > 1 ) {
      $excerpts = balanceTags( $excerpts[0], $force = true );
      $more_link = sprintf(
        ' <a href="%s">%s</a>',
        get_permalink(),
        '[続きを読む]'
      );

      $PostBody = $excerpts . $more_link;
    }

  }
  return $thumbnail . rtrim($PostBody);
}

注意したい点

プラグインが更新されると、修正内容がクリアされます。

プラグインを更新しないようにするか、更新した後に再度同じ修正をする必要があります。

コメント

タイトルとURLをコピーしました