WP_Sitemaps_Posts::get_url_list() public WP 5.5.0
Gets a URL list for a post type sitemap.
{} It's a method of the class: WP_Sitemaps_Posts{}
Hooks from the method
Return
Array. Array of URLs for a sitemap.
Usage
$WP_Sitemaps_Posts = new WP_Sitemaps_Posts(); $WP_Sitemaps_Posts->get_url_list( $page_num, $post_type );
- $page_num(int) (required)
- Page of results.
- $post_type(string)
- Post type name.
Default: ''
Changelog
Since 5.5.0 | Introduced. |
Code of WP_Sitemaps_Posts::get_url_list() WP Sitemaps Posts::get url list WP 5.6
public function get_url_list( $page_num, $post_type = '' ) {
// Bail early if the queried post type is not supported.
$supported_types = $this->get_object_subtypes();
if ( ! isset( $supported_types[ $post_type ] ) ) {
return array();
}
/**
* Filters the posts URL list before it is generated.
*
* Passing a non-null value will effectively short-circuit the generation,
* returning that value instead.
*
* @since 5.5.0
*
* @param array $url_list The URL list. Default null.
* @param string $post_type Post type name.
* @param int $page_num Page of results.
*/
$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();
/*
* Add a URL for the homepage in the pages sitemap.
* Shows only on the first page if the reading settings are set to display latest posts.
*/
if ( 'page' === $post_type && 1 === $page_num && 'posts' === get_option( 'show_on_front' ) ) {
// Extract the data needed for home URL to add to the array.
$sitemap_entry = array(
'loc' => home_url( '/' ),
);
/**
* Filters the sitemap entry for the home page when the 'show_on_front' option equals 'posts'.
*
* @since 5.5.0
*
* @param array $sitemap_entry Sitemap entry for the home page.
*/
$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 ),
);
/**
* Filters the sitemap entry for an individual post.
*
* @since 5.5.0
*
* @param array $sitemap_entry Sitemap entry for the post.
* @param WP_Post $post Post object.
* @param string $post_type Name of the post_type.
*/
$sitemap_entry = apply_filters( 'wp_sitemaps_posts_entry', $sitemap_entry, $post, $post_type );
$url_list[] = $sitemap_entry;
}
return $url_list;
}