post_limitsхук-фильтрWP 2.1.0

Изменяет LIMIT часть SQL запроса перед тем, как получить посты из базы данных с помощью WP_Query.

Хук позволяет определить нужное нам ограничение LIMIT в запросе, при получении постов.

При внесении изменений в post_limits не забывайте про пагинацию.

Чтобы удалить LIMIT часть запроса, верните в фильтре NULL. В этом случаем запрос вернет все полученные результаты без ограничений. Однако в этом случае параметр $wp_query->found_posts будет равен 0.

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

add_filter( 'post_limits', 'filter_function_name_11' );
function filter_function_name_11( $limit ) {
	// Обрабатываем переданные данные...

	return $limit;
}

Параметры

$limit(строка)
Строка, часть SQL запроса. Например: LIMIT 0, 25.

Примеры

1

#1 Количество выводимых записей в результатах поиска

Демонстрационный пример, показывающий как можно изменить количество выводимых записей на странице поиска по сайту. Тут устанавливается 25 результатов:

function my_post_limits( $limit ) {
	if ( is_search() ) {
		return 'LIMIT 0, 25';
	}
	return $limit;
}
add_filter( 'post_limits', 'my_post_limits' );

Это демонстрационный пример, не для использования. Потому что такой код выключит пагинацию, так как для страниц поиска всегда будет возвращаться "LIMIT 0, 25". Чтобы изменить количество записей и при этом не сломать пагинацию, лучше установить параметр posts_per_page через хук-действие pre_get_posts.

0

#2 Изменим количество выводимых постов в RSS-ленте

Обычно количество постов выводимых в фиде, можно изменить в настройках. Но в некоторых случаях такой вариант может не устраивать, тогда используйте такой код:

function how_many_posts_display_in_feed($query) {
	if( ! is_feed() )
		return;

	return 'LIMIT 25';
}
add_filter( 'post_limits', 'how_many_posts_display_in_feed' );

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

С версии 2.1.0 Введена.

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

WP_Query::get_posts()
post_limits
wp-includes/class-wp-query.php 2984
$limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) );

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

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