web-dev-qa-db-fra.com

combiner plusieurs flux avec fetch_feed et afficher les titres de blog pour chaque élément?

J'essaie d'afficher plusieurs flux à l'aide de la fonction fetch_feed. Cela fonctionne bien jusqu'à présent, sauf que je ne comprends pas pourquoi le titre de chaque flux RSS n'apparaîtra pas. Voici mon code:

<?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; ?>        

C'est ce bit de liste qui appelle le titre du flux rss. Si je ne récupère qu'un seul flux, le titre s'affiche. Lorsque je récupère plus d'un flux, comme dans l'exemple ci-dessus, le titre ne s'affiche pas. Des idées pour résoudre le problème? Merci!

1
Jordan Shipman

Je ne vois rien qui puisse suggérer que fetch_feed est supposé accepter un tableau de valeurs. Cela n’est pas mentionné dans le Codex, ni dans la source, @param string $url URL to retrieve feed .

Cela dit, fetch_feed passe les choses à SimplePie set_feed_url($url); qui accepte un tableau. Et je pense que la page de documentation de Simplepie est votre réponse. Le nom du flux RSS est $item->get_feed()->get_title() et non $rss->get_title().

Je suis toujours un peu prudent car vous passez un tableau à travers une fonction WordPress qui ne semble pas être faite pour cela.

1
s_ha_dum

Afficher le code ci-dessus avec l'image sélectionnée ...

<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
Zaheer Abbas Aghani