diff --git a/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php b/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php index b40dc74b39..12c5f1ac6b 100644 --- a/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php +++ b/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php @@ -157,4 +157,18 @@ private function put_lists_to_file( string $content ): bool { private function set_lists_cache( $content ) { set_transient( $this->get_cache_transient_name(), $content, $this->cache_duration ); } + + /** + * Removes the lists cache + * + * @return void + */ + public function remove_lists_cache() { + delete_transient( $this->get_cache_transient_name() ); + $lists_filepath = $this->get_json_filepath(); + if ( ! $this->filesystem->exists( $lists_filepath ) ) { + return; + } + $this->filesystem->delete( $lists_filepath ); + } } diff --git a/inc/Engine/Optimization/DynamicLists/DynamicLists.php b/inc/Engine/Optimization/DynamicLists/DynamicLists.php index 1734730889..3d09773b74 100644 --- a/inc/Engine/Optimization/DynamicLists/DynamicLists.php +++ b/inc/Engine/Optimization/DynamicLists/DynamicLists.php @@ -313,4 +313,16 @@ public function get_lrc_exclusions(): array { return $lists->lazy_rendering_exclusions ?? []; } + + /** + * Updates the lists from JSON files + * + * @return void + */ + public function update_lists_from_files() { + foreach ( $this->providers as $provider ) { + $provider->data_manager->remove_lists_cache(); + $provider->data_manager->get_lists(); + } + } } diff --git a/inc/Engine/Optimization/DynamicLists/Subscriber.php b/inc/Engine/Optimization/DynamicLists/Subscriber.php index 048c8cb7ad..8089bdee89 100644 --- a/inc/Engine/Optimization/DynamicLists/Subscriber.php +++ b/inc/Engine/Optimization/DynamicLists/Subscriber.php @@ -44,6 +44,7 @@ public static function get_subscribed_events() { 'rocket_plugins_to_deactivate' => 'add_incompatible_plugins_to_deactivate', 'rocket_staging_list' => 'add_staging_exclusions', 'rocket_lrc_exclusions' => 'add_lrc_exclusions', + 'wp_rocket_upgrade' => 'update_lists_from_files', ]; } @@ -202,4 +203,13 @@ public function add_staging_exclusions( $stagings = [] ): array { public function add_lrc_exclusions( $exclusions ): array { return array_merge( (array) $exclusions, $this->dynamic_lists->get_lrc_exclusions() ); } + + /** + * Update dynamic lists from JSON files. + * + * @return void + */ + public function update_lists_from_files() { + $this->dynamic_lists->update_lists_from_files(); + } }