post_limits
Изменяет 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' );
Список изменений
С версии 2.1.0 | Введена. |
Где вызывается хук
$limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) );