WordPress как на ладони
wordpress jino

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

Изменяет 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 Количество выводимых записей в результатах поиска

Демонстрационный пример, показывающий как можно изменить количество выводимых записей на странице поиска по сайту. Тут устанавливается 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.

#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' );

Связи хука

Используется в: WP_Query::get_posts()

Остальные хуки из: WP_Query::get_posts():

Фрагменты кода хука post_limits

Фрагмент из: wp-includes/class-wp-query.php WP 4.8.2
...
			 * @since 2.1.0
			 *
			 * @param string   $distinct The DISTINCT clause of the query.
			 * @param WP_Query &$this    The WP_Query instance (passed by reference).
			 */
			$distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) );

			/**
			 * Filters the LIMIT clause of the query.
			 *
			 * @since 2.1.0
			 *
			 * @param string   $limits The LIMIT clause of the query.
			 * @param WP_Query &$this  The WP_Query instance (passed by reference).
			 */
			$limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) );

			/**
			 * Filters the SELECT clause of the query.
			 *
			 * @since 2.1.0
			 *
			 * @param string   $fields The SELECT clause of the query.
			 * @param WP_Query &$this  The WP_Query instance (passed by reference).
			 */
			$fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) );

			/**
			 * Filters all query clauses at once, for convenience.
			 *
			 * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT,
...
post_limits Комментариев нет

Здравствуйте, !

Ваш комментарий