Different rss feeds in a single dashboard widget

I am using this snip of code to get rss feed on my dashboard as widget. It becomes problematic when it displays 5-6 different rss feeds which makes me run down deep.

How can I add 6 different feeds in a single dashboard widget with scroll bar?

Read More

Thanks

    add_action('wp_dashboard_setup', 'my_dashboard_widgets');
function my_dashboard_widgets() {
     global $wp_meta_boxes;
     // remove unnecessary widgets
     // var_dump( $wp_meta_boxes['dashboard'] ); // use to get all the widget IDs
     unset(
          $wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins'],
          $wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary'],
          $wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']
     );
     // add a custom dashboard widget
     wp_add_dashboard_widget( 'dashboard_custom_feed', 'Latest News', 'dashboard_custom_feed_output' ); //add new RSS feed output
}
function dashboard_custom_feed_output() {
     echo '<div class="rss-widget">';
     wp_widget_rss_output(array(
          'url' => 'http://www.nytimes.com/feed',  //put your feed URL here
          'items' => 4, //how many posts to show
          'show_summary' => 1
     ));
     echo "</div>";
}

Related posts

Leave a Reply

2 comments

  1. Yes, @toscho is right, the url works with an array of feeds adresses. And if you have 5/6 feeds, the total of items should be 20/24.

    For clear separation, I think it’s better to run the wp_widget_rss_output function n number of times, and prepare a previous array with titles and addresses and iterate through it. The scroll issue is just a matter of CSS.

    add_action( 'wp_dashboard_setup', 'multiple_feeds_wpse_91027' );
    
    function multiple_feeds_wpse_91027() 
    {
         wp_add_dashboard_widget( 
            'dashboard_custom_feed', 
            'Latest News', 
            'dashboard_feed_output_wpse_91027' 
        );
    }
    
    function dashboard_feed_output_wpse_91027() 
    {
        // Array with Title => Address
        $feeds = array( 
            'First Feed' => 'http://example.com/feed',
            'Second Feed' => 'http://example2.com/rss', 
            'Third Feed' => 'http://example3.com/feed/',
        );
        // Set max-height and enable scrolling
        echo '<div style="max-height:300px;overflow-y:auto">';
        foreach( $feeds as $key => $value )
        {
            echo "<h3>$key</h3>";
            wp_widget_rss_output(array(
                  'url' => $value,
                  'items' => 4, 
                  'show_summary' => 1
             ));
        }
        echo "</div>";
    }
    
  2. You can set your widget to be of a maximum height using CSS, and then add a scroll bar to it if you wish. It’s a bit of an outdated way of doing things though, and may look a bit ‘naff’.

    Untested, but this should do the job –

    div.rss-widget{
        max-height: 300px;
        overflow: scroll;
        overflow-x: hidden;
    }