wp_sitemaps_posts_query_argsхук-фильтрWP 5.5.0

Позволяет изменить параметры запроса WP_Query для карты сайта записей (постов).

Использование

add_filter( 'wp_sitemaps_posts_query_args', 'wp_kama_sitemaps_posts_query_args_filter', 10, 2 );

/**
 * Function for `wp_sitemaps_posts_query_args` filter-hook.
 * 
 * @param array  $args      Array of WP_Query arguments.
 * @param string $post_type Post type name.
 *
 * @return array
 */
function wp_kama_sitemaps_posts_query_args_filter( $args, $post_type ){

	// filter...
	return $args;
}
$args(массив)

Массив параметров, которые будут переданы в WP_Query при получении постов для карты сайта.

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,
	'ignore_sticky_posts'    => true,
)
$post_type(строка)
Типа записи, для которого фильтруются параметры запроса.

Примеры

0

#1 Исключим записи из карты сайта

Допустим вы разрабатываете плагин, который устанавливает некоторым страницам метатег noindex, неплохо бы также исключить эти страницы из карты сайта.

add_filter( 'wp_sitemaps_posts_query_args', 'kama_sitemaps_posts_query_args', 10, 2 );
function kama_sitemaps_posts_query_args( $args, $post_type ) {
	// не наш тип записи
	if ( 'post' !== $post_type ) {
		return $args;
	}

	// учтем что этот параметр может быть уже установлен
	$args['post__not_in'] = isset( $args['post__not_in'] ) ? $args['post__not_in'] : array();

	// Исключаем посты
	$args['post__not_in'][] = 12;
	$args['post__not_in'][] = 24;

	return $args;
}

Список изменений

С версии 5.5.0 Введена.
С версии 6.1.0 Added ignore_sticky_posts default parameter.

Где вызывается хук

WP_Sitemaps_Posts::get_posts_query_args()
wp_sitemaps_posts_query_args
wp-includes/sitemaps/providers/class-wp-sitemaps-posts.php 237-251
$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,
		'ignore_sticky_posts'    => true, // Sticky posts will still appear, but they won't be moved to the front.
	),
	$post_type
);

Где используется хук в WordPress

Использование не найдено.