WP_Sitemaps_Posts::get_url_list( int $page_num, string $object_subtype = '' ): array[]

Gets a URL list for a post type sitemap.


Parameters

$page_num int Required
Page of results.
$object_subtype string Optional
Post type name.

Default: ''


Top ↑

Return

array[] Array of URL information for a sitemap.


Top ↑

Source

File: wp-includes/sitemaps/providers/class-wp-sitemaps-posts.php. View all references

public function get_url_list( $page_num, $object_subtype = '' ) {
	// Restores the more descriptive, specific name for use within this method.
	$post_type = $object_subtype;

	// 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.
	 *
	 * Returning a non-null value will effectively short-circuit the generation,
	 * returning that value instead.
	 *
	 * @since 5.5.0
	 *
	 * @param array[]|null $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;
}

Top ↑

Hooks



Top ↑

Changelog

Changelog
Version Description
5.9.0 Renamed $post_type to $object_subtype to match parent class for PHP 8 named parameter support.
5.5.0 Introduced.

Top ↑

User Contributed Notes

You must log in before being able to contribute a note or feedback.