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?
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>";
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 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>";
}
Method 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;
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0