WordPress.org

Ready to get started?Download WordPress

Forums

should fetch_feed() be cleared if using multiple rss feeds on a page (2 posts)

  1. gdgraphics
    Member
    Posted 1 year ago #

    I am using the function fetch_feed() multiple times within a page template - basically to display 4 different news feeds in different columns.

    The first feed displays correctly however the second and subsequent feeds are not showing or are empty.
    I am using the function call in this way:
    $rss = fetch_feed(' first feed name')
    loop to parse and display the results
    $rss2 = fetch_feed('second feed name')
    loop to parse and display the results

    and so on.

    Is this actually possible or should I be clearing the fetch_feed() function between requests?

    Cheers
    Graham

  2. centree
    Member
    Posted 1 year ago #

    I'm not sure but in my case this coding is valid for me.

    Here is a code from WordPress Reference.
    http://codex.wordpress.org/Function_Reference/fetch_feed

    <h2><?php _e('Recent news from Some-Other Blog:'); ?></h2>
    <?php // Get RSS Feed(s)
    include_once(ABSPATH . WPINC . '/feed.php');
    
    // Get a SimplePie feed object from the specified feed source.
    $rss = fetch_feed('http://example.com/rss/feed/goes/here');
    if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly
        // Figure out how many total items there are, but limit it to 5.
        $maxitems = $rss->get_item_quantity(5); 
    
        // Build an array of all the items, starting with element 0 (first element).
        $rss_items = $rss->get_items(0, $maxitems);
    endif;
    ?>
    
    <ul>
        <?php if ($maxitems == 0) echo '<li>No items.</li>';
        else
        // Loop through each feed item and display each item as a hyperlink.
        foreach ( $rss_items as $item ) : ?>
        <li>
            <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_title() ); ?></a>
        </li>
        <?php endforeach; ?>
    </ul>

    If you change all"$rss" to "$rssA","rssB" or other unique word,you could display more than 2 columns in the same page.
    Remind that you should change "$rss_items" to "$rssA_items","rssB_items" also.

    Here is the full code that has been changed.

    <h2><?php _e('Recent news from Some-Other Blog:'); ?></h2>
    <?php // Get RSS Feed(s)
    include_once(ABSPATH . WPINC . '/feed.php');
    
    // Get a SimplePie feed object from the specified feed source.
    $rssA = fetch_feed('http://example.com/rss/feed/goes/here');
    if (!is_wp_error( $rssA ) ) : // Checks that the object is created correctly
        // Figure out how many total items there are, but limit it to 5.
        $maxitems = $rssA->get_item_quantity(5); 
    
        // Build an array of all the items, starting with element 0 (first element).
        $rssA_items = $rssA->get_items(0, $maxitems);
    endif;
    ?>
    
    <ul>
        <?php if ($maxitems == 0) echo '<li>No items.</li>';
        else
        // Loop through each feed item and display each item as a hyperlink.
        foreach ( $rssA_items as $item ) : ?>
        <li>
            <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_title() ); ?></a>
        </li>
        <?php endforeach; ?>
    </ul>

    Again, I'm not sure because I'm not professional of coding, but it works well for me.

Topic Closed

This topic has been closed to new replies.

About this Topic