web-dev-qa-db-fra.com

Flux RSS différents dans un seul widget de tableau de bord

J'utilise ce bout de code pour obtenir un flux RSS sur mon tableau de bord en tant que widget. Cela devient problématique lorsqu'il affiche 5 à 6 flux RSS différents, ce qui me fait sombrer dans la profondeur.

Comment puis-je ajouter 6 flux différents dans un seul widget de tableau de bord avec barre de défilement?

Merci

    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>";
}
2
10wtaylor

Oui, @toscho a raison, la url fonctionne avec un tableau d'adresses de flux. Et si vous avez 5/6 flux, le total des éléments doit être 20/24.

Pour une séparation claire, je pense qu'il est préférable d'exécuter la wp_widget_rss_output fonction n nombre de fois, et de préparer un tableau précédent avec les titres et les adresses et de le parcourir. Le problème de défilement est juste une question de 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>";
}
3
brasofilo

Vous pouvez définir une taille maximale pour votre widget à l'aide de CSS, puis lui ajouter une barre de défilement si vous le souhaitez. C'est un peu une façon dépassée de faire les choses, et ça peut paraître un peu "désagréable".

Non testé, mais cela devrait faire le travail -

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