web-dev-qa-db-ja.com

複数のフィードをfetch_feedと組み合わせて、各アイテムのブログのタイトルを表示しますか?

Fetch_feed関数を使って複数のフィードを表示しようとしています。各RSSフィードのタイトルが表示されない理由を理解できないことを除けば、これまでのところうまく機能しています。これが私のコードです:

<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/feed.php');
$rsslist = array(   'http://www.lt11.com/rss',
                    'http://feeds.feedburner.com/climbingnarc'
                );
$rss = fetch_feed($rsslist);
if (!is_wp_error( $rss ) ) : 
$maxitems = $rss->get_item_quantity(25); 
$rss_items = $rss->get_items(0, $maxitems); 
endif;
?>
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    else
    foreach ( $rss_items as $item ) : ?>
    <li class="feed"> 
        <a href='<?php echo esc_url( $item->get_permalink() ); ?>'
        title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'>
        <?php echo esc_html( $item->get_date('j/n/Y - g:i A') ); ?> - <div class="feeditemtitle"><?php echo esc_html( $item->get_title() ); ?></div> - <?php echo esc_html($rss->get_title() ); ?></a>
    </li>
    <?php endforeach; ?>        

RSSフィードのタイトルを要求するそのリストビット。フィードを1つだけ取得すると、タイトルが表示されます。上記の例のように複数のフィードを取得しても、タイトルが表示されません。これを修正する方法についての任意のアイデア?ありがとうございます。

1
Jordan Shipman

fetch_feed が値の配列を受け入れることになっていることを示唆するものは何もありません。それはコーデックスにもソースにも言及されていません @param string $url URL to retrieve feed

そうは言っても、fetch_feedはSimplePieの set_feed_url($url); に物を渡します。そして、そのSimplepie docsページは、あなたの答えがどこにあるかと思います。 RSSフィード名は$item->get_feed()->get_title()ではなく$rss->get_title()です

あなたがそれのために意図されていないように思われるWordPress関数を通して配列を渡しているので、私はまだ少し慎重です。

1
s_ha_dum

注目の画像とともに上記のコードを表示...

<div class="clearfix">
<?php 

include_once(ABSPATH . WPINC . '/feed.php');
$rsslist = array(   'http://www.bloggingwizard.com/feed',
                    'http://www.wpbeginner.com/feed/'
                );
$rss = fetch_feed($rsslist);
if (!is_wp_error( $rss ) ) : 
$maxitems = $rss->get_item_quantity(5); 
$rss_items = $rss->get_items(0, $maxitems); 
endif;
?>
<?php function get_first_image_url($html)
        {
            if (preg_match('/<img.+?src="(.+?)"/', $html, $matches)) {
            return $matches[1];
            }
        }
?>  


    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    else
    foreach ( $rss_items as $item ) : ?>
    <div class="col-md-4"> 

    <div class="rss-image" style="background-image: url('<?php echo get_first_image_url($item->get_content()) ?>');height: 200px;
    background-size: cover;">

        </div>

        <a href='<?php echo esc_url( $item->get_permalink() ); ?>'
        title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'>
       <div class="feeditemtitle">
       <?php echo esc_html( $item->get_title() ); ?></div>  <?php echo esc_html($rss->get_title() ); ?></a>
    </div>
    <?php endforeach; ?>   

</div>
0