џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџCџџџџ*џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџEbџџџџ>џџџџџџџџџџџџџџџџOџџџџџџџџџџџџNџџџџџџџџџџџџџџџџ_џџџџџџџџџџџџџџџџџџџџџџџџџџџџ$џџџџџџџџџџџџ1џџџџџџџџџџџџџџџџџџџџџџџџџџџџBYџџџџRGU=џџџџџџџџџџџџџџџџL0џџџџ2џџџџџџџџџџџџџџџџџџџџџџџџAџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџџџџџџDџџџџџџџџџџџџc^џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ`џџџџџџџџџџџџџџџџџџџџџџџџџџџџ@џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ84 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџV(Sџџџџ#џџџџџџџџ &џџџџ':TJџџџџџџџџaџџџџ.џџџџџџџџџџџџџџџџџџџџџџџџIџџџџџџџџџџџџџџџџџџџџ5%џџџџџџџџXџџџџ?џџџџ<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџQ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ)џџџџ[џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџK6џџџџџџџџ,\џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџWџџџџ-]џџџџHFAD џџџџпЂ€>bР(9дE 0GAD џџџџћэж0ЩwƒФзE HAD џџџџ.Ђр(ч€0ЈF IAD џџџџ9pы(ч€˜љ–I шIAD џџџџФ{№Ва€ ќ–I аJAD џџџџКѕЮ1РŒГџР§–I ИKAD џџџџ•>ˆы0Щwƒи,жE  LAD џџџџy™ПXv4ЊŸаQ.F 0H’D џџџџRџ{іSnІˆЗ(F I’D џџџџIГZоšoђиНF J’D џџџџƒ=gfйŽРљ F шJ’D џџџџ–Їє$аРXŸ"F аK’D џџџџЁŸ ›hЕ1F ИL’D џџџџTq№Ва€јїF  M’D џџџџЊG…ђR€ ёпE ˆN’D џџџџЪ@™aщЧwƒ1F pO’D џџџџ<5FЋАа€`1F XP’D џџџџгZE;Kяpђ^тE @Q’D џџџџVРЬ“—ѕЉŸи1F (R’D џџџџŽЋRьgŒЉ81F S’D џџџџžР/ЧA‰aР)F јS’D џџџџ›с}ЕіёpЄ&F pZ’D џџџџРI§^йŽР˜1F X[’D Ž"PяpђтE (]’D ж<‰љэ”x 1F ^’D џџџџЏ€l`ŠиwƒЈм(F ј^’D џџџџQ_ ЋP5Г 1F р_’D џџџџЃ4—ъ0Щwƒик(F Ш`’D џџџџgв€…й&BС`р(F Аa’D џџџџнŽЕNДЈŸŠ"F ˜b’D џџџџEЎAьвЋдкјъдE €c’D џџџџušаˆч€˜ˆ"F hd’D џџџџвлтец€ЩдE Pe’D џџџџ8ВЙIsђШ‰"F 8f’D џџџџ4ЙБЊШ 1F  g’D џџџџyЅС|ъј 1F h’D "4yтMДЈŸˆ"F №h’D џџџџОoЅ‘№iвX 1F иi’D џџџџЂiv 3П—фИ 1F Рj’D џџџџЅќsяiв 1F Јk’D џџџџšдS€†дE l’D нHMђR€АcдE xm’D џџџџ Нf –КШ‹"F `n’D џџџџCюЂ‘№iв1F Ho’D џџџџяРмpїф`1F 0p’D џџџџ§‰S€ЈŸ"F q’D џџџџЎ7О-uЕЬp1F шr’D џџџџ№%|№Ва€`1F аs’D џџџџOHv№Ва€А1F Иt’D !8Ѕ‡џR€ШОдE  u’D џџџџSnCѓс• Я)F ˆv’D џџџџdIЗј)Ћшœа1F pw’D џџџџŒ]e:ЯбpђH F Xx’D џџџџНDn:Ябpђ1F @y’D џџџџьЂа•БЉŸ(ћF (z’D џџџџЇ Є7[Ј€1F {’D џџџџ‹БІЖЌpђшФF ј{’D гЖ4ч€˜бF р|’D џџџџІЌЁ&RtеЈаF Ш}’D џџџџпsѕЗ'Чwƒ0гF А~’D џџџџЦz`˜йwƒ€УщE ˜’D  IРѕЗ'ЧwƒHšF €€’D  ”Ћ№tеhбF h’D џџџџФU Œѕ/†РШзF P‚’D  г/і†вњ€гF 8ƒ’D џџџџ[­'ощ7EБˆт(F …’D џџџџBe kМиŽРшщ"F №…’D ъОЬI№iвhњF и†’D џџџџhжf‰eлА1F Р‡’D џџџџіяe]ІoђP*F Јˆ’D џџџџG™ќЬЎoђP*F ‰’D FG‘ЫЭ‡‡€1F xŠ’D џџџџNЇ‡џR€(1F `‹’D џџџџЖ`А=ЬЏАЯШ1F pJ|E џџџџЈ•Ба€АѓF XK|E џџџџы‹-ŒЖа€PбF @L|E HN—Г;rлwƒяF (M|E ;пВr№Ва€аŸF N|E џџџџ'W‘ї_$ЈŸРєF јN|E џџџџ#цQM–ёiв8F рO|E џџџџў^дТц€ряF ШP|E  в я–н)"фіF АQ|E џџџџFrхmŠ‘ ‚XїF ˜R|E џџџџ›44Га€ёF €S|E 7Ї€+яЖа€И‰дE hT|E џџџџHћ”R|ЧіˆИїF PU|E џџџџ™q1€јF 8V|E џџџџњcI6бЯPњF  W|E џџџџТ%ŠS€АOF X|E +CPnЅ‡іїЩ(ћF №X|E MпТМў”ч€лпE иY|E Zп$hьR€pЊзE РZ|E /№$ЊГа€ј‚дE Ј[|E PўWд ЧьeР№ќF \|E џџџџmSqП‰иwƒPгE x]|E џџџџ,ЅI1€Ј3зE $tax_name . '-sitemap' . $current_page . '.xml' ), 'lastmod' => $date, ]; } } return $index; } /** * Get set of sitemap link data. * * @param string $type Sitemap type. * @param int $max_entries Entries per sitemap. * @param int $current_page Current page of the sitemap. * * @return array * * @throws OutOfBoundsException When an invalid page is requested. */ public function get_sitemap_links( $type, $max_entries, $current_page ) { global $wpdb; $links = []; if ( ! $this->handles_type( $type ) ) { return $links; } $taxonomy = get_taxonomy( $type ); $steps = $max_entries; $offset = ( $current_page > 1 ) ? ( ( $current_page - 1 ) * $max_entries ) : 0; /** This filter is documented in inc/sitemaps/class-taxonomy-sitemap-provider.php */ $hide_empty = apply_filters( 'wpseo_sitemap_exclude_empty_terms', true, [ $taxonomy->name ] ); /** This filter is documented in inc/sitemaps/class-taxonomy-sitemap-provider.php */ $hide_empty_tax = apply_filters( 'wpseo_sitemap_exclude_empty_terms_taxonomy', $hide_empty, $taxonomy->name ); $terms = get_terms( [ 'taxonomy' => $taxonomy->name, 'hide_empty' => $hide_empty_tax, 'update_term_meta_cache' => false, 'offset' => $offset, 'number' => $steps, ] ); // If there are no terms fetched for this range, we are on an invalid page. if ( empty( $terms ) ) { throw new OutOfBoundsException( 'Invalid sitemap page requested' ); } $post_statuses = array_map( 'esc_sql', WPSEO_Sitemaps::get_post_statuses() ); // Grab last modified date. $sql = " SELECT MAX(p.post_modified_gmt) AS lastmod FROM $wpdb->posts AS p INNER JOIN $wpdb->term_relationships AS term_rel ON term_rel.object_id = p.ID INNER JOIN $wpdb->term_taxonomy AS term_tax ON term_tax.term_taxonomy_id = term_rel.term_taxonomy_id AND term_tax.taxonomy = %s AND term_tax.term_id = %d WHERE p.post_status IN ('" . implode( "','", $post_statuses ) . "') AND p.post_password = '' "; /** * Filter: 'wpseo_exclude_from_sitemap_by_term_ids' - Allow excluding terms by ID. * * @api array $terms_to_exclude The terms to exclude. */ $terms_to_exclude = apply_filters( 'wpseo_exclude_from_sitemap_by_term_ids', [] ); foreach ( $terms as $term ) { if ( in_array( $term->term_id, $terms_to_exclude, true ) ) { continue; } $url = []; $tax_noindex = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'noindex' ); if ( $tax_noindex === 'noindex' ) { continue; } $url['loc'] = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'canonical' ); if ( ! is_string( $url['loc'] ) || $url['loc'] === '' ) { $url['loc'] = get_term_link( $term, $term->taxonomy ); } $url['mod'] = $wpdb->get_var( $wpdb->prepare( $sql, $term->taxonomy, $term->term_id ) ); if ( $this->include_images ) { $url['images'] = $this->get_image_parser()->get_term_images( $term ); } // Deprecated, kept for backwards data compat. R. $url['chf'] = 'daily'; $url['pri'] = 1; /** This filter is documented at inc/sitemaps/class-post-type-sitemap-provider.php */ $url = apply_filters( 'wpseo_sitemap_entry', $url, 'term', $term ); if ( ! empty( $url ) ) { $links[] = $url; } } return $links; } /** * Check if taxonomy by name is valid to appear in sitemaps. * * @param string $taxonomy_name Taxonomy name to check. * * @return bool */ public function is_valid_taxonomy( $taxonomy_name ) { if ( WPSEO_Options::get( "noindex-tax-{$taxonomy_name}" ) === true ) { return false; } if ( in_array( $taxonomy_name, [ 'link_category', 'nav_menu' ], true ) ) { return false; } if ( $taxonomy_name === 'post_format' && WPSEO_Options::get( 'disable-post_format', false ) ) { return false; } /** * Filter to exclude the taxonomy from the XML sitemap. * * @param bool $exclude Defaults to false. * @param string $taxonomy_name Name of the taxonomy to exclude.. */ if ( apply_filters( 'wpseo_sitemap_exclude_taxonomy', false, $taxonomy_name ) ) { return false; } return true; } /** * Get the Image Parser. * * @return WPSEO_Sitemap_Image_Parser */ protected function get_image_parser() { if ( ! isset( self::$image_parser ) ) { self::$image_parser = new WPSEO_Sitemap_Image_Parser(); } return self::$image_parser; } }