web-dev-qa-db-ja.com

単一のダッシュボードウィジェット内の異なるRSSフィード

私はダッシュボード上のウィジェットとしてのRSSフィードを取得するためにこのコードの断片を使用しています。 5〜6種類のRSSフィードが表示されると問題になります。

スクロールバー付きの1つのダッシュボードウィジェットに6つの異なるフィードを追加する方法

ありがとう

    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

はい、@ toschoは正しいです、urlはフィードアドレスの配列で動作します。また、5/6フィードがある場合、アイテムの総数は20/24になります。

明確に分離するには、wp_widget_rss_output関数をn回実行し、タイトルとアドレスを使用して前の配列を準備し、それを繰り返すことをお勧めします。スクロールの問題は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

CSSを使用してウィジェットを最大の高さに設定し、必要に応じてスクロールバーを追加することができます。それは、やや時代遅れのやり方であり、少し「気の利いた」ように見えるかもしれません。

テストされていませんが、これでうまくいくはずです -

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