別のブログ記事を自分のホームページで掲載したい!

みーちゃん

こんにちは!絵も描く戦略型デザイナーのみーちゃんです。

突然ですが、別ブログの記事をホームページに掲載したい!ということはありませんか?

私は、ブログは絶対SWELLテーマを使って書きたい!でも自分のホームページはSWELLテーマは使いたくないっ!!という欲がありまして、メインのホームページと、このコラムブログは別々のWordPressで動いています。

でも、自分のホームページにはブログの新着記事を載せたい!!WordPressのRSSフィードを使えばWordPress記事は取得できるけど、画像までは取得できない・・・

結果、解決策はブログのRSSフィードを取得してそれをホームページに掲載する!ということでした!

おまじないコードを入れるだけで簡単にできるのでご紹介します〜!

目次

WordPressのRSSフィードについて

WordPressはで初期状態でいろいろなフィードを生成してくれています!

どんなフィードが生成されているか確認する時は、サイトURLに/feed/を加えてアクセスすると確認できますよ!

https://example.com/feed

ちなみにカテゴリ別の記事を取得したい場合は

https://example.com/category/category-name/feed

という感じで、取得することも可能です!

Miyuki

カテゴリ別の記事まで取得できるとか、すごくない・・・?

配信側のサイトのRSSフィードにアイキャッチ画像が含まれていない場合

配信側のサイトで/feed/を加えてアクセスしたときに、CDATA内に、.pngや.jpgといった画像が含まれていない場合は、RSSフィードにアイキャッチ画像が含まれていない場合があります。

その場合は、配信側のfunctions.phpに下記のコードを追加してあげます!

function rss_add_thumbnail($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
        return '<p>' . get_the_post_thumbnail($post->ID) .'</p>' . $content;
    }
    return $content;
}
add_filter('the_excerpt_rss', 'rss_add_thumbnail');
add_filter('the_content_feed', 'rss_add_thumbnail');

記事出力のためのコード

<div class="parts-blog">
  <?php include_once( ABSPATH . WPINC . '/feed.php' );
    $feeduri = 'https://p3wave.com/blog/feed/';
    $rss = fetch_feed($feeduri);
    if (!is_wp_error($rss)) {
    $maxitems = $rss->get_item_quantity( 3 );  //最新3件だけ取得する
    $rss_items = $rss->get_items( 0, $maxitems );  // 0件から始めて指定した件数までの配列を生成
    }

  foreach ( $rss_items as $item ) : ?>

  <!-- 記事へのリンク -->
  <div class="parts-blog__item">
    <a href="<?php echo $item->get_permalink(); ?>">
    <!-- 記事の最初の画像を表示 -->
      <?php
      $first_img = "";
      if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) {
        $first_img = $matches[1];
      }
      ?>
      <div class="parts-blog__img"><img src="<?php echo esc_attr( $first_img ); ?>" alt=""></div>

    <!-- 記事のタイトルを表示 -->
    <h2 class="parts-blog__title">
      <?php
      $title = $item->get_title();
      if(mb_strlen( $title ) > 100 ): ?>
        <?php echo mb_substr( $title,0,100 );?>
      <?php else : ?>
        <?php echo $title ;?>
      <?php endif; ?>
    </h2>

    <div class="d-block d-md-flex">
      <!-- 投稿時間を表示 -->
        <?php
        $item_date = $item->get_date();
        $date = date('Y.m.d',strtotime( $item_date )); ?>
        <p class="parts-blog__date"><?php echo $date; ?></p>

      <!-- カテゴリーを表示 -->
      <?php /*
        if ( $category = $item->get_category() ) {
          echo '<div class="parts-blog__cat">';
          echo esc_html( $category->get_label() );
          echo '</div>';
        }
       */ ?>
    </div>
    </a>
  </div>
  <?php endforeach; wp_reset_postdata(); ?>

</div>
  • URLをコピーしました!

この記事を書いた人

目次