まとめサイトを作成しています
WordPressで作成したサイトがいくつかあるので、RSSで
まとめサイトの方にWordPress複数サイトの最新記事が表示されるような仕様にしたいと考えております
投稿、日付などは取得できたのですが、サムネイル画像が取得できず困っています(現在は投稿の初めの画像がサムネイル代わりに表示されている状態です)
どなたかご教授していただけましたら助かります。お願いいたします
function.phpは下記のように記述しています
function.php
1//RSSアイキャッチ設定 2add_theme_support('post-thumbnails'); 3 4remove_filter('do_feed_rss2', 'do_feed_rss2', 10); 5function custom_feed_rss2(){ 6 $template_file = '/feed-rss2.php'; 7 load_template(get_template_directory() . $template_file); 8} 9add_action('do_feed_rss2', 'custom_feed_rss2', 10); 10
RSSの記述は下記のようになっています
RSSの記述
1<?php 2// RSS フィードを取得します。 3include_once(ABSPATH . WPINC . '/feed.php'); 4 5// 指定されたフィードから SimplePie のオブジェクトを取得します。 6//新着情報を取得したいフィードのURLをarray関数を使い、配列で指定しています。 7//配列にすることで、複数の RSS フィードを同時に取得して、1つにまとめて時系列に並べて表示することができます。 8$rss_arr = array( 'https://osakagourmet.jp/feed'); 9$rss = fetch_feed($rss_arr);if (!is_wp_error( $rss ) ) : 10 11$image = $item->image->url; // アイキャッチ 12$thumb = $item->thumb->url; // アイキャッチサムネイル 13$thumb = get_the_post_thumbnail($post->ID); 14$pattern= "/(?<=src=['|\"])[^'|\"]*?(?=['|\"])/i"; 15preg_match($pattern, $thumb, $thePath); 16$theSrc = $thePath[0]; 17 18 19// ちゃんとフィードが生成されているかをチェックします。 20// すべてのフィードから最新10件を出力します。 21//全部表示する場合は -1 22$maxitems = $rss->get_item_quantity(4); 23 24// 0件から始めて指定した件数までの配列を生成します。 25$rss_items = $rss->get_items(0, $maxitems); endif;?> 26 27<ul style="list-style: none; display: flex; padding: 0;"> 28<!-- 29取得できた RSS フィードが0件の時は「No items.」と表示します。 --> 30<?php if ($maxitems == 0) echo '<li>No items.</li>'; 31else 32 33// 取得できた RSS フィードが1件以上あった時は、以下のように RSS のデータを繰り返します。 34// 取得したい RSS のデータは、$itemにあるデータであれば、他のデータも表示させることができます。 35// 以下では、取得してきた外部の RSS フィードのサムネイル、日付、記事タイトルを表示して、その記事へのリンクを実現しています。 36foreach ( $rss_items as $item ) : ?> 37 <a class="relation" href='<?php echo $item->get_permalink(); ?>'> 38 <?php 39$first_img = ''; 40if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) { 41$first_img = $matches[1]; 42} 43?> 44<?php if ( !empty( $first_img ) ) : ?><img src="<?php echo esc_attr( $first_img ); ?>" alt="" style="width: 176px;height:92.141px;"><?php endif; ?> 45<?php echo $item->get_title(); ?></a> 46<?php endforeach; ?> 47</ul>
あなたの回答
tips
プレビュー