diff --git src/wp-admin/includes/dashboard.php src/wp-admin/includes/dashboard.php
index 89047ba..b2da4ab 100644
--- src/wp-admin/includes/dashboard.php
+++ src/wp-admin/includes/dashboard.php
@@ -1365,11 +1365,123 @@ function wp_dashboard_primary() {
  * @param array  $feeds     Array of RSS feeds.
  */
 function wp_dashboard_primary_output( $widget_id, $feeds ) {
+
+	$displayed_links = array();
+
 	foreach ( $feeds as $type => $args ) {
 		$args['type'] = $type;
 		echo '<div class="rss-widget">';
-			wp_widget_rss_output( $args['url'], $args );
-		echo "</div>";
+
+		$rss = fetch_feed( $args['url'] );
+
+		if ( is_wp_error( $rss ) ) {
+			if ( is_admin() || current_user_can( 'manage_options' ) ) {
+				echo '<p><strong>' . __( 'RSS Error:' ) . '</strong> ' . $rss->get_error_message() . '</p>';
+			}
+			return;
+		}
+
+		$default_args = array(
+			'show_author' => 0,
+			'show_date' => 0,
+			'show_summary' => 0,
+			'items' => 0,
+		);
+		$args = wp_parse_args( $args, $default_args );
+
+		$items = (int) $args['items'];
+		if ( $items < 1 || 20 < $items ) {
+			$items = 10;
+		}
+		$show_summary  = (int) $args['show_summary'];
+		$show_author   = (int) $args['show_author'];
+		$show_date     = (int) $args['show_date'];
+
+		if ( ! $rss->get_item_quantity() ) {
+			echo '<ul><li>' . esc_html__( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</li></ul>';
+			$rss->__destruct();
+			unset( $rss );
+			return;
+		}
+
+		$maxitems = $rss->get_item_quantity();
+		$rss_items = $rss->get_items( 0, $maxitems );
+
+		$count = 0;
+
+		echo '<ul>';
+		foreach ( $rss_items as $item ) {
+			$link = $item->get_link();
+			while ( stristr( $link, 'http' ) !== $link ) {
+				$link = substr( $link, 1 );
+			}
+			$link = esc_url( strip_tags( $link ) );
+
+			// Skip this item if the link was already displayed.
+			if ( in_array( $link, $displayed_links, true ) ) {
+				continue;
+			}
+
+			$title = esc_html( trim( strip_tags( $item->get_title() ) ) );
+			if ( empty( $title ) ) {
+				$title = __( 'Untitled' );
+			}
+
+			$desc = @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) );
+			$desc = esc_attr( wp_trim_words( $desc, 55, ' [&hellip;]' ) );
+
+			$summary = '';
+			if ( $show_summary ) {
+				$summary = $desc;
+
+				// Change existing [...] to [&hellip;].
+				if ( '[...]' === substr( $summary, -5 ) ) {
+					$summary = substr( $summary, 0, -5 ) . '[&hellip;]';
+				}
+
+				$summary = '<div class="rssSummary">' . esc_html( $summary ) . '</div>';
+			}
+
+			$date = '';
+			if ( $show_date ) {
+				$date = $item->get_date( 'U' );
+
+				if ( $date ) {
+					$date = ' <span class="rss-date">' . date_i18n( get_option( 'date_format' ), $date ) . '</span>';
+				}
+			}
+
+			$author = '';
+			if ( $show_author ) {
+				$author = $item->get_author();
+				if ( is_object( $author ) ) {
+					$author = $author->get_name();
+					$author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>';
+				}
+			}
+
+			if ( '' === $link ) {
+				echo "<li>$title{$date}{$summary}{$author}</li>";
+			} elseif ( $show_summary ) {
+				echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$summary}{$author}</li>";
+			} else {
+				echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$author}</li>";
+			}
+
+			$displayed_links[] = $link;
+			$count++;
+
+			// Stop if we displayed the requested number of items.
+			if ( $count === $items ) {
+				break;
+			}
+
+		}
+		echo '</ul>';
+		$rss->__destruct();
+		unset( $rss );
+
+		echo '</div>';
 	}
 }
 
