diff --git a/wp-admin/includes/class-wp-plugin-install-list-table.php b/wp-admin/includes/class-wp-plugin-install-list-table.php
index 1556ac53cc..3593426489 100644
--- a/wp-admin/includes/class-wp-plugin-install-list-table.php
+++ b/wp-admin/includes/class-wp-plugin-install-list-table.php
@@ -273,7 +273,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
return;
}
- if ( 'top' == $which ) { ?>
+ if ( 'top' == $which ) {
+ wp_referer_field();
+ ?>
display();
+ ?>
+
+ get_pagenum();
+
+if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
+ $location = remove_query_arg( '_wp_http_referer', wp_unslash( $_SERVER['REQUEST_URI'] ) );
+
+ if ( ! empty( $_REQUEST['paged'] ) ) {
+ $location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
+ }
+
+ wp_redirect( $location );
+ exit;
+}
+
$wp_list_table->prepare_items();
+$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
+
+if ( $pagenum > $total_pages && $total_pages > 0 ) {
+ wp_redirect( add_query_arg( 'paged', $total_pages ) );
+ exit;
+}
+
$title = __( 'Add Plugins' );
$parent_file = 'plugins.php';