From 3e3468bb4b2c7d4c4867b0df0823944ec2422213 Mon Sep 17 00:00:00 2001
From: Paul Biron <paul@sparrowhawkcomputing.com>
Date: Wed, 11 Jul 2018 07:53:38 -0600
Subject: [PATCH] Privacy: Pagination screen options for the requests list
 tables

---
 src/wp-admin/includes/admin-filters.php |  2 ++
 src/wp-admin/includes/misc.php          |  2 ++
 src/wp-admin/includes/user.php          | 15 ++++++++++++++-
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/wp-admin/includes/admin-filters.php b/src/wp-admin/includes/admin-filters.php
index bfc9f51..0816b24 100644
--- a/src/wp-admin/includes/admin-filters.php
+++ b/src/wp-admin/includes/admin-filters.php
@@ -47,6 +47,8 @@ add_action( 'admin_head', '_ipad_meta' );
 
 // Privacy tools
 add_action( 'admin_menu', '_wp_privacy_hook_requests_page' );
+add_action( 'load-tools_page_export_personal_data', '_wp_privacy_requests_screen_options' );
+add_action( 'load-tools_page_remove_personal_data', '_wp_privacy_requests_screen_options' );
 
 // Prerendering.
 if ( ! is_customize_preview() ) {
diff --git a/src/wp-admin/includes/misc.php b/src/wp-admin/includes/misc.php
index 013d006..b351877 100644
--- a/src/wp-admin/includes/misc.php
+++ b/src/wp-admin/includes/misc.php
@@ -619,6 +619,8 @@ function set_screen_options() {
 			case 'upload_per_page':
 			case 'edit_tags_per_page':
 			case 'plugins_per_page':
+			case 'export_personal_data_requests_per_page':
+			case 'remove_personal_data_requests_per_page':
 				// Network admin
 			case 'sites_network_per_page':
 			case 'users_network_per_page':
diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php
index fa868d9..8ba5976 100644
--- a/src/wp-admin/includes/user.php
+++ b/src/wp-admin/includes/user.php
@@ -1005,6 +1005,19 @@ function _wp_privacy_hook_requests_page() {
 	add_submenu_page( 'tools.php', __( 'Erase Personal Data' ), __( 'Erase Personal Data' ), 'erase_others_personal_data', 'remove_personal_data', '_wp_personal_data_removal_page' );
 }
 
+/**
+ * Add options for the privacy requests screens.
+ *
+ * @since 4.9.8
+ * @access private
+ */
+function _wp_privacy_requests_screen_options() {
+	$args = array(
+		'option'  => str_replace( 'tools_page_', '', get_current_screen()->id ) . '_requests_per_page',
+	);
+	add_screen_option( 'per_page', $args );
+}
+
 // TODO: move the following classes in new files.
 if ( ! class_exists( 'WP_List_Table' ) ) {
 	require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
@@ -1221,7 +1234,7 @@ abstract class WP_Privacy_Requests_Table extends WP_List_Table {
 		);
 
 		$this->items    = array();
-		$posts_per_page = 20;
+		$posts_per_page = $this->get_items_per_page( $this->request_type . '_requests_per_page' );
 		$args           = array(
 			'post_type'      => $this->post_type,
 			'post_name__in'  => array( $this->request_type ),
-- 
2.7.0.windows.1

