ՖU Z+eՖU@@P[#UP[eՖU@@P\#UP\tՖU`PP _Q0ՖUP P` _ՖU` _+eՖU@`P`#UPP`eՖU@@Pa#U0PatՖU` P dQ0ՖU P dՖU d+eՖU@Oe#UOeeՖU@Of#UOftՖU`O iQՖU i+eՖU`pO jRՖU jՖU `j+ՖU O8k=ՖUOPkAtՖU`O kQ ՖU `kAtՖU`N kQ ՖU pkAtՖU`N kQ ՖU kAՖU0 kyՖUp0 ktՖU`0NP lQՖUP `P l.tՖU`N` lQaՖU` P l4ՖUP P l.ՖUM@l=tՖU`Mp lQ ՖUp PlAtՖU`pM lQ ՖU `lAtՖU`@M lQ ՖU plAaՖUpluOՖU l<ՖU laՖU P l4ՖUP l+\sՖU`pLm#U`LmՖUm*eՖU`0LHo#U LoeՖU`L`p#ULptՖU`K uQՖU u+eՖUɮ̖K xvRՖU  vՖU `v+tՖU`pK wQՖU`K 0 wՖU0 w+\sՖU`0Kx#U KxՖUx*eՖU`Jz#UJzeՖU`J{#UJ{tՖU`Jp QՖUp +eՖUJ RՖU ՖU +eՖU7V0J#U JeՖU7VJ#UJtՖU`I QՖU @+eՖUE ͖I#UItՖU`I Q1ՖU yՖUpI ՖU +eՖUU͖@I #U0IՖU *tՖU`I Q1ՖU 0 yՖUH0 @ ՖU@ +eՖUU͖H8#UHՖU@*tՖU``H` Q1ՖU` p yՖU0Hp ՖU +eՖUU͖HP#UGՖU`*eՖUU͖Gh#UGtՖU`G QՖU `+eՖUE ͖pG#U`GeՖUE ͖PG#U@GՖU̖0Gp7ՖU`PB)ՖU<eՖUXΖF R}ՖU F RՖU  MՖU NՖU {ՖU 0 ՖU0 @+ՖU*rՖUF@ sՖU@ @ .a = new WPSEO_Sitemap_Cache_Data(); $sitemap_data->set_sitemap( $sitemap ); $sitemap_data->set_status( $status ); return set_transient( $transient_key, $sitemap_data, DAY_IN_SECONDS ); } /** * Delete cache transients for index and specific type. * * Always deletes the main index sitemaps cache, as that's always invalidated by any other change. * * @since 1.5.4 * @since 3.2 Changed from function wpseo_invalidate_sitemap_cache() to method in this class. * * @param string $type Sitemap type to invalidate. * * @return void */ public static function invalidate( $type ) { self::clear( [ $type ] ); } /** * Helper to invalidate in hooks where type is passed as second argument. * * @since 3.2 * * @param int $unused Unused term ID value. * @param string $type Taxonomy to invalidate. * * @return void */ public static function invalidate_helper( $unused, $type ) { if ( WPSEO_Options::get( 'noindex-' . $type ) === false || WPSEO_Options::get( 'noindex-tax-' . $type ) === false ) { self::invalidate( $type ); } } /** * Invalidate sitemap cache for authors. * * @param int $user_id User ID. * * @return bool True if the sitemap was properly invalidated. False otherwise. */ public static function invalidate_author( $user_id ) { $user = get_user_by( 'id', $user_id ); if ( $user === false ) { return false; } if ( current_action() === 'user_register' ) { update_user_meta( $user_id, '_yoast_wpseo_profile_updated', time() ); } if ( empty( $user->roles ) || in_array( 'subscriber', $user->roles, true ) ) { return false; } self::invalidate( 'author' ); return true; } /** * Invalidate sitemap cache for the post type of a post. * * Don't invalidate for revisions. * * @since 1.5.4 * @since 3.2 Changed from function wpseo_invalidate_sitemap_cache_on_save_post() to method in this class. * * @param int $post_id Post ID to invalidate type for. * * @return void */ public static function invalidate_post( $post_id ) { if ( wp_is_post_revision( $post_id ) ) { return; } self::invalidate( get_post_type( $post_id ) ); } /** * Delete cache transients for given sitemaps types or all by default. * * @since 1.8.0 * @since 3.2 Moved from WPSEO_Utils to this class. * * @param array $types Set of sitemap types to delete cache transients for. * * @return void */ public static function clear( $types = [] ) { if ( ! self::$is_enabled ) { return; } // No types provided, clear all. if ( empty( $types ) ) { self::$clear_all = true; return; } // Always invalidate the index sitemap as well. if ( ! in_array( WPSEO_Sitemaps::SITEMAP_INDEX_TYPE, $types, true ) ) { array_unshift( $types, WPSEO_Sitemaps::SITEMAP_INDEX_TYPE ); } foreach ( $types as $type ) { if ( ! in_array( $type, self::$clear_types, true ) ) { self::$clear_types[] = $type; } } } /** * Invalidate storage for cache types queued to clear. */ public static function clear_queued() { if ( self::$clear_all ) { WPSEO_Sitemaps_Cache_Validator::invalidate_storage(); self::$clear_all = false; self::$clear_types = []; return; } foreach ( self::$clear_types as $type ) { WPSEO_Sitemaps_Cache_Validator::invalidate_storage( $type ); } self::$clear_types = []; } /** * Adds a hook that when given option is updated, the cache is cleared. * * @since 3.2 * * @param string $option Option name. * @param string $type Sitemap type. */ public static function register_clear_on_option_update( $option, $type = '' ) { self::$cache_clear[ $option ] = $type; } /** * Clears the transient cache when a given option is updated, if that option has been registered before. * * @since 3.2 * * @param string $option The option name that's being updated. * * @return void */ public static function clear_on_option_update( $option ) { if ( array_key_exists( $option, self::$cache_clear ) ) { if ( empty( self::$cache_clear[ $option ] ) ) { // Clear all caches. self::clear(); } else { // Clear specific provided type(s). $types = (array) self::$cache_clear[ $option ]; self::clear( $types ); } } } }