diff --git a/src/wp-admin/includes/privacy-tools.php b/src/wp-admin/includes/privacy-tools.php
index 7e2badcb4e..cf1fb610c3 100644
--- a/src/wp-admin/includes/privacy-tools.php
+++ b/src/wp-admin/includes/privacy-tools.php
@@ -401,17 +401,30 @@ function wp_privacy_generate_personal_data_export_file( $request_id ) {
 	 */
 	$error            = false;
 	$archive_url      = get_post_meta( $request_id, '_export_file_url', true );
+	$archive_filename = get_post_meta( $request_id, '_export_file_name', true );
 	$archive_pathname = get_post_meta( $request_id, '_export_file_path', true );
 
-	if ( empty( $archive_pathname ) || empty( $archive_url ) ) {
-		$archive_filename = $file_basename . '.zip';
-		$archive_pathname = $exports_dir . $archive_filename;
-		$archive_url      = $exports_url . $archive_filename;
+	if ( empty( $archive_filename ) && ! empty( $archive_pathname ) ) {
+		$archive_filename = basename( $archive_pathname );
 
-		update_post_meta( $request_id, '_export_file_url', $archive_url );
-		update_post_meta( $request_id, '_export_file_path', wp_normalize_path( $archive_pathname ) );
+	  update_post_meta( $request_id, '_export_file_name', wp_normalize_path( $archive_filename ) );
+	  delete_post_meta( $request_id, '_export_file_path' );
+
+		if ( ! empty( $archive_pathname ) && file_exists( $archive_pathname ) ) {
+		    wp_delete_file( $archive_pathname );
+	 	}
+		
+	} elseif ( empty( $archive_pathname ) || empty( $archive_url ) ) {
+		
+			$archive_filename = $file_basename . '.zip';
+			$archive_url      = $exports_url . $archive_filename;
+
+			update_post_meta( $request_id, '_export_file_url', $archive_url );
+			update_post_meta( $request_id, '_export_file_name', wp_normalize_path( $archive_filename ) );
 	}
 
+	$archive_pathname = $exports_dir . $archive_filename;
+
 	if ( ! empty( $archive_pathname ) && file_exists( $archive_pathname ) ) {
 		wp_delete_file( $archive_pathname );
 	}
diff --git a/tests/phpunit/tests/privacy/wpPrivacyGeneratePersonalDataExportFile.php b/tests/phpunit/tests/privacy/wpPrivacyGeneratePersonalDataExportFile.php
index 9ca05dadca..d07196cf38 100755
--- a/tests/phpunit/tests/privacy/wpPrivacyGeneratePersonalDataExportFile.php
+++ b/tests/phpunit/tests/privacy/wpPrivacyGeneratePersonalDataExportFile.php
@@ -264,4 +264,47 @@ class Tests_Privacy_WpPrivacyGeneratePersonalDataExportFile extends WP_UnitTestC
 		$this->assertContains( '<h2>About</h2>', $report_contents );
 		$this->assertContains( $request->email, $report_contents );
 	}
+
+	/**
+	 * Test export file is generated in a new export dir (absolute path) set using 'wp_privacy_exports_dir' filter
+	 *
+	 * @ticket 44038
+	 */
+	public function test_export_file_generated_in_new_export_dir_with_absolute_path() {
+		
+		$new_absolute_path = trailingslashit( self::$exports_dir . 'another_directory' );
+
+		add_filter('wp_privacy_exports_dir', function() use($new_absolute_path) {
+			return $new_absolute_path;
+		});
+
+		wp_privacy_generate_personal_data_export_file( self::$export_request_id );
+
+		$this->assertTrue( file_exists( $new_absolute_path ) );
+		$this->assertTrue( file_exists( $new_absolute_path . 'index.html' ) );
+		$this->assertTrue( file_exists( $this->export_file_name ) );
+	}
+
+	/**
+	 * Test export file is generated in a new export dir (absolute path) set using 'wp_privacy_exports_dir' filter and changing meta to simulate old absolute path stored values
+	 *
+	 * @ticket 44038
+	 */
+	public function test_export_file_generated_in_new_export_dir_with_absolute_path_changing_meta() {
+		
+		$new_absolute_path = trailingslashit( self::$exports_dir . 'another_directory' );
+
+		add_filter('wp_privacy_exports_dir', function() use($new_absolute_path) {
+			return $new_absolute_path;
+		});
+
+		// Changing meta to simulate old absolute path stored values:
+		update_post_meta( self::$export_request_id, '_export_file_path', wp_normalize_path( $new_absolute_path ) );
+
+		wp_privacy_generate_personal_data_export_file( self::$export_request_id );
+
+		$this->assertTrue( file_exists( $new_absolute_path ) );
+		$this->assertTrue( file_exists( $new_absolute_path . 'index.html' ) );
+		$this->assertTrue( file_exists( $this->export_file_name ) );
+	}
 }
