diff --git a/src/wp-admin/includes/file.php b/src/wp-admin/includes/file.php index 17a51b8d40..b00752e095 100644 --- a/src/wp-admin/includes/file.php +++ b/src/wp-admin/includes/file.php @@ -2023,9 +2023,8 @@ function wp_privacy_generate_personal_data_export_file( $request_id ) { } // Create the exports folder if needed. - $upload_dir = wp_upload_dir(); - $exports_dir = trailingslashit( $upload_dir['basedir'] . '/exports' ); - $exports_url = trailingslashit( $upload_dir['baseurl'] . '/exports' ); + $exports_dir = wp_privacy_exports_dir(); + $exports_url = wp_privacy_exports_url(); $result = wp_mkdir_p( $exports_dir ); if ( is_wp_error( $result ) ) { diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 763b98df28..60229ee10b 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -6248,6 +6248,52 @@ function wp_privacy_anonymize_data( $type, $data = '' ) { return apply_filters( 'wp_privacy_anonymize_data', $anonymous, $type, $data ); } +/** + * Returns the directory used to store personal data export files. + * + * @since 4.9.6 + * + * @see wp_privacy_exports_url + * + * @return string Exports directory. + */ +function wp_privacy_exports_dir() { + $upload_dir = wp_upload_dir(); + $exports_dir = trailingslashit( $upload_dir['basedir'] ) . 'wp-personal-data-exports/'; + + /** + * Filters the directory used to store personal data export files. + * + * @since 4.9.6 + * + * @param string $exports_dir Exports directory. + */ + return apply_filters( 'wp_privacy_exports_dir', $exports_dir ); +} + +/** + * Returns the URL of the directory used to store personal data export files. + * + * @since 4.9.6 + * + * @see wp_privacy_exports_dir + * + * @return string Exports directory URL. + */ +function wp_privacy_exports_url() { + $upload_dir = wp_upload_dir(); + $exports_url = trailingslashit( $upload_dir['baseurl'] ) . 'wp-personal-data-exports/'; + + /** + * Filters the URL of the directory used to store personal data export files. + * + * @since 4.9.6 + * + * @param string $exports_url Exports directory URL. + */ + return apply_filters( 'wp_privacy_exports_url', $exports_url ); +} + /** * Schedule a `WP_Cron` job to delete expired export files. * @@ -6277,8 +6323,7 @@ function wp_schedule_delete_old_privacy_export_files() { function wp_privacy_delete_old_export_files() { require_once( ABSPATH . 'wp-admin/includes/file.php' ); - $upload_dir = wp_upload_dir(); - $exports_dir = trailingslashit( $upload_dir['basedir'] . '/exports' ); + $exports_dir = wp_privacy_exports_dir(); $export_files = list_files( $exports_dir, 100, array( 'index.html' ) ); /**