numberposts? showposts? posts_per_page?

20 сент. 2011 г., 00:42:20
Просмотры: 49.4K
Голосов: 28

Итак, документация в Codex четко указывает, что showposts является устаревшим. Но та же документация ничего не говорит о numberposts. Вместо этого указан параметр posts_per_page.

Но если мы обратимся к документации Codex для get_posts, мы не увидим упоминания posts_per_page, вместо этого там указан numberposts.

В post.php мы видим, что происходит: numberposts установлен как значение по умолчанию (5), но затем копируется в posts_per_page (если только posts_per_page не установлен в аргументах).

Мой вопрос довольно педантичный, но я хочу обновить Codex, поэтому хотел спросить у вас - есть ли причина, по которой мы не должны просто рекомендовать использовать posts_per_page повсеместно, постепенно объявляя numberposts устаревшим? Или я упускаю какой-то важный момент?

3
Комментарии

Поскольку numberposts считается устаревшим, лучшей практикой будет использование posts_per_page отныне.

Brian Fegter Brian Fegter
20 сент. 2011 г. 02:13:55

@Brian, не могли бы вы указать, где именно вы увидели, что numberposts официально объявлен устаревшим? Я не смог найти этого в исходниках.

Tom Auger Tom Auger
20 сент. 2011 г. 15:42:28

Извините, я имел в виду showposts. http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters Приношу свои извинения.

Brian Fegter Brian Fegter
20 сент. 2011 г. 17:11:55
Все ответы на вопрос 2
3
12

На мой взгляд, отказ от параметра numberposts не имеет смысла, так как numberposts используется для запроса x количества записей, тогда как posts_per_page определяет, сколько записей отображается на одной странице при пагинации. Если бы мы отказались от numberposts в пользу только posts_per_page, то пагинация перестала бы существовать.

Например:

"numberposts" => 50, "posts_per_page" => 10

всего запрашивается 50 записей, по 10 записей на страницу, что дает 5 страниц по 10 записей каждая.

При удалении numberposts:

"posts_per_page" => 50

всего запрашивается 50 записей, по 50 записей на страницу (поскольку значение numberposts копируется в posts_per_page), что дает одну страницу из 50 записей и отсутствие пагинации.

Дайте знать, если я повторяю то, что вам уже известно, и я просто немного запутался в вопросе.

20 дек. 2011 г. 18:58:14
Комментарии

Я согласен, что по звучанию они должны делать разные вещи, но если изучить код, на самом деле это не так! В некоторых случаях я предпочитаю "numberposts", например, когда концепция "страниц" не играет роли - как в выводе в сайдбаре виджета.

Tom Auger Tom Auger
24 апр. 2012 г. 21:01:24

Я думаю, numberposts необходим, когда нужно получить все записи, передав -1, чего нельзя сделать с posts_per_page

iSaumya iSaumya
6 авг. 2019 г. 10:42:05

@iSaumya неверно - документация для параметров пагинации WP_Query явно указывает, что можно передать posts_per_page = -1

acobster acobster
22 авг. 2020 г. 02:55:13
0

Класс WP_Query использует параметр posts_per_page, тогда как функция get_posts использует параметр numberposts. На странице документации функции get_posts указано:

'numberposts'(int) Общее количество записей для выборки. Является алиасом для $posts_per_page в WP_Query. Принимает значение -1 для выборки всех записей. По умолчанию 5.

На странице справочника по коду get_posts() в исходном коде видно, что используется значение numberposts, когда posts_per_page не указан, таким образом это работает как 'алиас' (или запасной вариант) для него.

if ( ! empty( $parsed_args['numberposts'] ) && empty( $parsed_args['posts_per_page'] ) ) { $parsed_args['posts_per_page'] = $parsed_args['numberposts']; ...

По крайней мере, так я это понимаю.

18 дек. 2021 г. 20:46:49