質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.93%

RSS サムネイル表示されない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 829

score 14

まとめサイトを作成しています

WordPressで作成したサイトがいくつかあるので、RSSで
まとめサイトの方にWordPress複数サイトの最新記事が表示されるような仕様にしたいと考えております

投稿、日付などは取得できたのですが、サムネイル画像が取得できず困っています(現在は投稿の初めの画像がサムネイル代わりに表示されている状態です)

どなたかご教授していただけましたら助かります。お願いいたします

function.phpは下記のように記述しています

//RSSアイキャッチ設定
add_theme_support('post-thumbnails');

remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
function custom_feed_rss2(){
  $template_file = '/feed-rss2.php';
  load_template(get_template_directory() . $template_file);
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);

RSSの記述は下記のようになっています

<?php
// RSS フィードを取得します。
include_once(ABSPATH . WPINC . '/feed.php');

// 指定されたフィードから SimplePie のオブジェクトを取得します。
//新着情報を取得したいフィードのURLをarray関数を使い、配列で指定しています。
//配列にすることで、複数の RSS フィードを同時に取得して、1つにまとめて時系列に並べて表示することができます。
$rss_arr = array(    'https://osakagourmet.jp/feed');
$rss = fetch_feed($rss_arr);if (!is_wp_error( $rss ) ) :

$image = $item->image->url;  // アイキャッチ
$thumb = $item->thumb->url;  // アイキャッチサムネイル
$thumb = get_the_post_thumbnail($post->ID);
$pattern= "/(?<=src=['|\"])[^'|\"]*?(?=['|\"])/i";
preg_match($pattern, $thumb, $thePath);
$theSrc = $thePath[0];


// ちゃんとフィードが生成されているかをチェックします。
// すべてのフィードから最新10件を出力します。
//全部表示する場合は -1
$maxitems = $rss->get_item_quantity(4);

// 0件から始めて指定した件数までの配列を生成します。
$rss_items = $rss->get_items(0, $maxitems); endif;?>

<ul style="list-style: none; display: flex; padding: 0;">
<!-- 
取得できた RSS フィードが0件の時は「No items.」と表示します。 -->
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else

// 取得できた RSS フィードが1件以上あった時は、以下のように RSS のデータを繰り返します。
// 取得したい RSS のデータは、$itemにあるデータであれば、他のデータも表示させることができます。
// 以下では、取得してきた外部の RSS フィードのサムネイル、日付、記事タイトルを表示して、その記事へのリンクを実現しています。
foreach ( $rss_items as $item ) : ?>
    <a class="relation" href='<?php echo $item->get_permalink(); ?>'>
   <?php
$first_img = '';
if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) {
$first_img = $matches[1];
}
?>
<?php if ( !empty( $first_img ) ) : ?><img src="<?php echo esc_attr( $first_img ); ?>" alt="" style="width: 176px;height:92.141px;"><?php endif; ?>
<?php echo $item->get_title(); ?></a>
<?php endforeach; ?>
</ul>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • Space-Monkey

    2020/09/05 22:35

    $itemはどこから出て来たのか

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る