File "class-wp-sitemaps-taxonomies.php"
Full path: /home/kosmetik/public_html/wp-includes/sitemaps/providers/class-wp-sitemaps-taxonomies.php
File
size: 2.46 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class WP_Sitemaps_Taxonomies extends WP_Sitemaps_Provider
{
public function __construct()
{
$this->name = 'taxonomies';
$this->object_type = 'term';
}
public function get_object_subtypes()
{
$taxonomies = get_taxonomies(array('public' => true), 'objects');
$taxonomies = array_filter($taxonomies, 'is_taxonomy_viewable');
return apply_filters('wp_sitemaps_taxonomies', $taxonomies);
}
public function get_url_list($page_num, $taxonomy = '')
{
$supported_types = $this->get_object_subtypes();
if (!isset($supported_types[$taxonomy])) {
return array();
}
$url_list = apply_filters('wp_sitemaps_taxonomies_pre_url_list', null, $taxonomy, $page_num);
if (null !== $url_list) {
return $url_list;
}
$url_list = array();
$offset = ($page_num - 1) * wp_sitemaps_get_max_urls($this->object_type);
$args = $this->get_taxonomies_query_args($taxonomy);
$args['offset'] = $offset;
$taxonomy_terms = new WP_Term_Query($args);
if (!empty($taxonomy_terms->terms)) {
foreach ($taxonomy_terms->terms as $term) {
$term_link = get_term_link($term, $taxonomy);
if (is_wp_error($term_link)) {
continue;
}
$sitemap_entry = array('loc' => $term_link);
$sitemap_entry = apply_filters('wp_sitemaps_taxonomies_entry', $sitemap_entry, $term, $taxonomy);
$url_list[] = $sitemap_entry;
}
}
return $url_list;
}
public function get_max_num_pages($taxonomy = '')
{
if (empty($taxonomy)) {
return 0;
}
$max_num_pages = apply_filters('wp_sitemaps_taxonomies_pre_max_num_pages', null, $taxonomy);
if (null !== $max_num_pages) {
return $max_num_pages;
}
$term_count = wp_count_terms($this->get_taxonomies_query_args($taxonomy));
return (int) ceil($term_count / wp_sitemaps_get_max_urls($this->object_type));
}
protected function get_taxonomies_query_args($taxonomy)
{
$args = apply_filters('wp_sitemaps_taxonomies_query_args', array('fields' => 'ids', 'taxonomy' => $taxonomy, 'orderby' => 'term_order', 'number' => wp_sitemaps_get_max_urls($this->object_type), 'hide_empty' => true, 'hierarchical' => false, 'update_term_meta_cache' => false), $taxonomy);
return $args;
}
}