diff --git a/includes/class-delete-all.php b/includes/class-delete-all.php
index 9fda4f08e0a9523c49ba2f30ecd6d85da287729a..2472f38aa8f9767c9f0a2602e25f879fc44e2b7b 100644
--- a/includes/class-delete-all.php
+++ b/includes/class-delete-all.php
@@ -30,14 +30,17 @@ class Delete_All {
 	 * Handle a request to delete all trashed items for a given post type
 	 */
 	public static function process( $vars ) {
+		// Special keys are used to trigger this request, and we need to remove them on redirect
+		$extra_keys = array( 'delete_all', 'delete_all2', );
+
 		$action_scheduled = self::action_next_scheduled( self::CRON_EVENT, $vars->post_type );
 
 		if ( empty( $action_scheduled ) ) {
 			wp_schedule_single_event( time(), self::CRON_EVENT, array( $vars ) );
 
-			self::redirect( true );
+			Main::do_admin_redirect( self::ADMIN_NOTICE_KEY, true, $extra_keys );
 		} else {
-			self::redirect( false );
+			Main::do_admin_redirect( self::ADMIN_NOTICE_KEY, false, $extra_keys );
 		}
 	}
 
@@ -92,25 +95,6 @@ class Delete_All {
 		}
 	}
 
-	/**
-	 * Redirect, including a flag to indicate if the bulk process was scheduled successfully
-	 *
-	 * @param bool $succeeded Whether or not the bulk-delete was scheduled
-	 */
-	public static function redirect( $succeeded = false ) {
-		$redirect = wp_unslash( $_SERVER['REQUEST_URI'] );
-
-		// Remove arguments that could re-trigger this bulk-edit
-		$redirect = remove_query_arg( array( '_wp_http_referer', '_wpnonce', 'delete_all', 'delete_all2', ), $redirect );
-
-		// Add a flag for the admin notice
-		$redirect = add_query_arg( self::ADMIN_NOTICE_KEY, $succeeded ? 1 : -1, $redirect );
-
-		$redirect = esc_url_raw( $redirect );
-		wp_safe_redirect( $redirect );
-		exit;
-	}
-
 	/**
 	 * Let the user know what's going on
 	 */
diff --git a/includes/class-main.php b/includes/class-main.php
index 841e4f52aba368e69045c733bfd3468ddeb10a22..a61d63d0ea920b04e4e741f2b9d6ee7cf500a217 100644
--- a/includes/class-main.php
+++ b/includes/class-main.php
@@ -154,6 +154,29 @@ class Main {
 		unset( $_REQUEST['delete_all'] );
 		unset( $_REQUEST['delete_all2'] );
 	}
+
+	/**
+	 * Redirect, including a flag to indicate if the bulk process was scheduled successfully
+	 *
+	 * @param string  $return_key  Key to include in redirect URL to flag request's origin, use for admin feedback, etc.
+	 * @param bool    $succeeded   Whether or not the bulk-delete was scheduled
+	 * @param array   $extra_keys  Array of additional action keys to remove from redirect URL. Optional.
+	 */
+	public static function do_admin_redirect( $return_key, $succeeded = false, $extra_keys = array() ) {
+		$redirect = wp_unslash( $_SERVER['REQUEST_URI'] );
+
+		// Remove arguments that could re-trigger this bulk-edit
+		$action_keys = array( '_wp_http_referer', '_wpnonce', 'action', 'action2', );
+		$action_keys = array_merge( $action_keys, $extra_keys );
+		$redirect    = remove_query_arg( $action_keys, $redirect );
+
+		// Add a flag for the admin notice
+		$redirect = add_query_arg( $return_key, $succeeded ? 1 : -1, $redirect );
+
+		$redirect = esc_url_raw( $redirect );
+		wp_safe_redirect( $redirect );
+		exit;
+	}
 }
 
 Main::load();