/var/www/html/wp-content/plugins/woocommerce/src/Internal/ComingSoon/ComingSoonCacheInvalidator.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace Automattic\WooCommerce\Internal\ComingSoon;

/**
 * Adds hooks to invalidate caches when the coming soon settings are changed.
 */
class ComingSoonCacheInvalidator {

    
/**
     * Sets up the hooks.
     *
     * @internal
     */
    
final public function init() {
        
add_action'update_option_woocommerce_coming_soon', array( $this'invalidate_caches' ) );
        
add_action'update_option_woocommerce_store_pages_only', array( $this'invalidate_caches' ) );
    }

    
/**
     * Invalidate the WordPress object cache and other known caches.
     *
     * @internal
     */
    
public function invalidate_caches() {
        
// Standard WordPress object cache invalidation.
        
wp_cache_flush();

        
/**
         * Temporary solution to invalidate the WordPress.com Edge Cache. We can trigger
         * invalidation by publishing any post. It should be refactored with a supported integration.
         */
        
$cart_page_id get_option'woocommerce_cart_page_id' ) ?? null;
        if ( 
$cart_page_id ) {
            
// Re-publish the coming soon page. Has the side-effect of invalidating the Edge Cache.
            
wp_update_post(
                array(
                    
'ID'          => $cart_page_id,
                    
'post_status' => 'publish',
                )
            );
        }
    }
}