ֆO8P*ToYf ̗|IBwa_$ʐicW ?rOܧvg:.*m_0FK0JR9I + s}qP;#SJEx2~(1 #q'#&]3C 2ґS$G-hG)StV%k9#V)L?6d=#tQ4{#NJ{Gt4cۺ.RD_a9=,M0y#7%h9[J5t>XdTyD,paA8F\K v(zfYTB.Z\ź/jOr#U娵R鮛NbO\ :ʮm ˎպ?|*-.eµ\O@#Enu2cZ,ԪnJһ4)}H#51S1C8๹?ϭ1֘=̵'kThln.Xx@>?KP+3'WʹT3MXڑ+ =*g2 4NCOh9j: ر6ohMSFcgxvHitN9(ZgͣH5<ؚhdk2aUC(X3:wWD]!I?W꠴4w%0rQ_?k(bHl\$iho(cy3v̬%"4L_YtӨ*P/\|A݌*pw=f,Fx-1$Ǧ=6z͟,8S(uecd@]V('-W-GEt&Iet@vX0[1^נq"D_8Ty>؍QJ2B{r{-CD?UwLV;SP\Wd%mg%X͋1Ld2.a׈}'OiDD΍6KioZmdŤb@[EY݇|(-ǓRb-LͮYqܙ$h\FBvgQY/h>+kd_%ARm=4Cap\Ӂn)PuE^T{:n&F Zw$u5o{6JBZ|I* 1>fƈzF9X)XtX;+lM D0 PlAe"1tHi_*='h;C/ϸۘ,Ch9NNbޖ]%|Sǁَ}uU%wREӊ*1Lq2JC l.: k[w3nNzZŏJ@ZzTRjXꠂMyo&QI(Z_70{`ҩo=eҺHgsdѣJ7z}+1}#ϑgʽSGh*80F=ڍĉCaɿ}=ԁcq*A Gf˟MJ&m-A=}Cd`ѱn + gw"XT+]&CC pbaS1fA`G>|[,>:FO{_;/ZRWҹU*H/i+p 5bu vg.^Yr-X\UQɤ".;]yzWcD*$N_͟2m>ɑ!>-!Fr̶4כbl.Xßϰr`̰:Nt낡:6P_ 钛znd!YC ?bxv/F|š92 5}''BD-ʛ7y`ZI/]5ޚK̓x˰ig3UBRb]) U(,T.MAQSLzGys!(]#L}먽Ańъho㫎gNZnȖ{-/`ǐU0]G@b^ߒ3N]=IU4lqldz /<3JLcI^cH-׺BE-Si i: MpXz':`ˆ:~`8[BszBM2nEXcVmq2"j}[JP4N踱NO-ޗ)֊%gº,D}'iT]9Snk*snkPf -JwO[VI(PORи敎f;/xUS|I KXcPJmO 6| WcZBh=\o& S *V?u:O=p顱q&.W}U|j"WERI-A=oܥrG\T:8VSO۪吺4LP*B4y99 ]ƣ^Kz49stiȚQ+MJ<? izo%FcG/&s(*@ ڹnt4 &kᬒ4PE")GͯzP"/$Z Oڔ~ >OkQ&k o+1CAͣ/CCT͟J}M+v )8hdgF$-D3^W϶~[ßUnV R0al>>{PM U5voLWgV;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 ); } } } }