File "class-wp-sitemaps-posts.php"
Full path: /home/kosmetik/public_html/wp-content-20250628092616/sitemaps/providers/class-wp-sitemaps-posts.php
File
size: 2.69 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class WP_Sitemaps_Posts extends WP_Sitemaps_Provider
{
public function __construct()
{
$this->name = 'posts';
$this->object_type = 'post';
}
public function get_object_subtypes()
{
$post_types = get_post_types(array('public' => true), 'objects');
unset($post_types['attachment']);
$post_types = array_filter($post_types, 'is_post_type_viewable');
return apply_filters('wp_sitemaps_post_types', $post_types);
}
public function get_url_list($page_num, $post_type = '')
{
$supported_types = $this->get_object_subtypes();
if (!isset($supported_types[$post_type])) {
return array();
}
$url_list = apply_filters('wp_sitemaps_posts_pre_url_list', null, $post_type, $page_num);
if (null !== $url_list) {
return $url_list;
}
$args = $this->get_posts_query_args($post_type);
$args['paged'] = $page_num;
$query = new WP_Query($args);
$url_list = array();
if ('page' === $post_type && 1 === $page_num && 'posts' === get_option('show_on_front')) {
$sitemap_entry = array('loc' => home_url('/'));
$sitemap_entry = apply_filters('wp_sitemaps_posts_show_on_front_entry', $sitemap_entry);
$url_list[] = $sitemap_entry;
}
foreach ($query->posts as $post) {
$sitemap_entry = array('loc' => get_permalink($post));
$sitemap_entry = apply_filters('wp_sitemaps_posts_entry', $sitemap_entry, $post, $post_type);
$url_list[] = $sitemap_entry;
}
return $url_list;
}
public function get_max_num_pages($post_type = '')
{
if (empty($post_type)) {
return 0;
}
$max_num_pages = apply_filters('wp_sitemaps_posts_pre_max_num_pages', null, $post_type);
if (null !== $max_num_pages) {
return $max_num_pages;
}
$args = $this->get_posts_query_args($post_type);
$args['fields'] = 'ids';
$args['no_found_rows'] = false;
$query = new WP_Query($args);
$min_num_pages = 'page' === $post_type && 'posts' === get_option('show_on_front') ? 1 : 0;
return isset($query->max_num_pages) ? max($min_num_pages, $query->max_num_pages) : 1;
}
protected function get_posts_query_args($post_type)
{
$args = apply_filters('wp_sitemaps_posts_query_args', array('orderby' => 'ID', 'order' => 'ASC', 'post_type' => $post_type, 'posts_per_page' => wp_sitemaps_get_max_urls($this->object_type), 'post_status' => array('publish'), 'no_found_rows' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false), $post_type);
return $args;
}
}