posts_per_page без ограничений
-
-
Я некоторое время гуглил и искал кодекс WP,но я просто не могу найти прямого ответа на этот простой вопрос.Я считаю,что мой вопрос четко сформулирован с использованием примера кода и моей попытки (установка высокого значения для аргумента).Я не эксперт по WP,поэтому я пришел сюда,чтобы задать вопрос.Даже ответы на вопросы,которые кажутся вам тривиальными,помогают в развитии этих сообществ Stack Exchange.Мне лично нравится видеть ссылку на переполнение стека в моих результатах поиска,а не ссылку на дрянной форум.I've been Googling for awhile and searching the WP codex, but I just can't find a direct answer to this simple question. I believe my question is worded clearly with example code, and what my attempt was (setting a high value for the argument). I'm not a WP expert, so thats why I came here to ask the question. Even providing answers to questions that seem trivial to you are helpful in growing these Stack Exchange communities. I personally love seeing a Stack Overflow link in my search results, as opposed to a link to a crappy forum.
- 6
- 2011-12-11
- Banjer
-
Также спасибо за ответ.Вы должны опубликовать его как ответ,а не комментарий,чтобы я мог его принять.Also, thanks for the answer. You should post it as an answer and not a comment, so I can accept it.
- 0
- 2011-12-11
- Banjer
-
Я понял вашу точку зрения и ценю ваши усилия по * написанию * вопроса.Я также согласен с тем,что вопросы неспециалистов могут оказаться полезными в этом сообществе.С другой стороны,слишком много таких вопросов может отпугнуть некоторых экспертов от участия здесь.Думаю,все дело в каком-то балансе.В любом случае,я очень сторонник,так что с нетерпением жду ваших следующих вопросов :) Хорошо провести время здесь,на WPSE.I've got your point and I do appreciate your effort in *writing* the question. I also agree that non-expert questions can prove themselves valuable in this community. On the other hand too many of such questions can discourage some experts from getting involved here. It's all about some kind of balance I guess. Anyway I'm a big up-voter so I'm looking forward to your next questions :) Have a great time here on WPSE.
- 0
- 2011-12-11
- Michal Mau
-
PS: вы также хотите заменить `type` на`post_type` (или вообще удалить эту строку).Я отредактирую как ответ Рутвика,так и ваш вопрос,чтобы никто не скопировал эту небольшую ошибку.PS: you also want to replace `type` for `post_type` (or remove this line altogether). I will edit both the Rutwick's answer and your question to prevent somebody from copy-pasting this little mistake.
- 0
- 2011-12-11
- Michal Mau
-
@Maugly Спасибо за исправление,человек ... сосредоточился наposts_per_page,поэтому скопировал опечатку!;)@Maugly Thanks for the correction man... just focused on posts_per_page hence copied the typo! ;)
- 0
- 2011-12-11
- Rutwick Gangurde
-
6 ответ
- голосов
-
- 2011-12-11
-1 ваш ответ!Найдите
posts_per_page
здесь .$args = array( 'post_type' => 'post', 'cat' => '22,47,67', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'depth' => 1, 'posts_per_page' => -1 );
Важное предостережение : это может привести к очень большому запросу,который может вывести сайт из строя.Делайте это,только если уверены,что ваша база данных может с этим справиться.Не в общедоступных темах или плагинах.
-1 is your answer! Look for
posts_per_page
here.$args = array( 'post_type' => 'post', 'cat' => '22,47,67', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'depth' => 1, 'posts_per_page' => -1 );
Important caveat: This can result in a very huge query that can bring the site down. Do this only if you are sure your database can handle it. Not in public themes or plugins.
-
Важное предостережение: это может привести к очень большому запросу,который может вывести сайт из строя.Делайте это,только если вы ** уверены **,что ваша база данных справится с этим.Не в публичных темах или плагинах.Important caveat: This can result in a very huge query that can bring the site down. Do this only if you are **sure** your database can handle it. Not in public themes or plugins.
- 7
- 2016-08-11
- fuxia
-
@toscho Добавление вашего комментария в качестве обновления к ответу.@toscho Adding your comment as an update to the answer.
- 0
- 2016-11-23
- Rutwick Gangurde
-
ты спасаешь мне жизнь !!you save my life!!
- 0
- 2019-10-11
- Darlan Dieterich
-
@DarlanDieterich Рад,что смог помочь!:)@DarlanDieterich Glad I could help! :)
- 0
- 2019-10-14
- Rutwick Gangurde
-
- 2011-12-12
Или,альтернативно,вы можете передать
WP_Query
(это то,чтоquery_posts
использует) аргументnopaging
,который в основном делает то же самое ..$args = array( 'nopaging' => true // Your other args, etc.. );
Он будет делать то же самое,но если вам придется взглянуть на него позже и вы не сможете вспомнить,что делали,я лично считаю,что вам будет более понятно,что вы имели в виду с этим параметромвнутри массива args.
Однако,как я уже упоминал,они оба достигают одного и того же.
Не помешает использовать более одного подхода,и всегда приятно поделиться тем,что вы знаете,достаточно сказать,что это причина моего ответа,несмотря на то,что у вас уже есть достаточный вариант ..;)
Or alternatively you can pass
WP_Query
(which is whatquery_posts
uses) thenopaging
argument, which basically does the same thing..$args = array( 'nopaging' => true // Your other args, etc.. );
It will do exactly the same, but if you have to look back at it later and can't remember what you were doing, i personally feel it will be more clear to you, what it is you were intending with that parameter inside the args array.
As i mentioned however, they'll both actually achieve the same.
Can't hurt to have more than one approach, and it's always nice to share what you know, suffice to say that's the reason for my answer, despite you already having a sufficient one.. ;)
-
- 2014-02-23
Из файла функций вашей дочерней темы:
add_action( 'pre_get_posts', 'wpsites_no_limit_posts' ); function wpsites_no_limit_posts( $query ) { if( $query->is_main_query() && !is_admin() && is_home() ) { $query->set( 'posts_per_page', '-1' ); $query->set( 'order', 'ASC' ); $query->set( 'post_type', 'post' ); $query->set( 'cat', '22,47,67' ); $query->set( 'orderby', 'name' ); $query->set( 'order', 'ASC' ); $query->set( 'hide_empty', '1' ); $query->set( 'depth', '1' ); } }
From your child themes functions file:
add_action( 'pre_get_posts', 'wpsites_no_limit_posts' ); function wpsites_no_limit_posts( $query ) { if( $query->is_main_query() && !is_admin() && is_home() ) { $query->set( 'posts_per_page', '-1' ); $query->set( 'order', 'ASC' ); $query->set( 'post_type', 'post' ); $query->set( 'cat', '22,47,67' ); $query->set( 'orderby', 'name' ); $query->set( 'order', 'ASC' ); $query->set( 'hide_empty', '1' ); $query->set( 'depth', '1' ); } }
-
- 2019-10-17
Использование Рикардо с некоторыми изменениями:
static $paged; $post_ids = []; do { $paged++; $defaults = [ 'fields' => 'ids', // Only return the ID field to make this query faster. 'post_type' => 'post', 'posts_per_page' => 100, 'no_found_rows' => false, // We need pagination & the count for all posts found. 'paged' => $paged, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, ]; $query = new WP_Query($defaults); if ($query->have_posts()) { foreach ($query->posts as $id) { $post_ids[] = $id; } } } while ($query->max_num_pages > $paged); return $post_ids;
Это значительно увеличит время запроса за счет выполнения запросов только по строке идентификатора и избежания обновления терминов и метакеша.
Using Ricardo's with some modification:
static $paged; $post_ids = []; do { $paged++; $defaults = [ 'fields' => 'ids', // Only return the ID field to make this query faster. 'post_type' => 'post', 'posts_per_page' => 100, 'no_found_rows' => false, // We need pagination & the count for all posts found. 'paged' => $paged, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, ]; $query = new WP_Query($defaults); if ($query->have_posts()) { foreach ($query->posts as $id) { $post_ids[] = $id; } } } while ($query->max_num_pages > $paged); return $post_ids;
This will dramatically increase the query time by only querying against the ID row and avoiding updating term and meta cache.
-
Ницца! Спасибо,что поделился.Nice! thanks for sharing.
- 0
- 2019-10-18
- Ricardo Canelas
-
- 2016-08-11
Правильный ответ на вашу проблему:
'posts_per_page' => -1
,потому что-1
вернет неограниченное количество сообщений на страницу,как ответят другие пользователи.Я просто хочу добавить дополнение к этому Q/A,
Если вы хотите получить количество сообщений на странице из параметра чтения в панели администрирования WordPress,вам необходимо вызвать функцию
get_option()
и передатьposts_per_page
в качествестрока к нему.$args = array( 'post_type' => 'post', 'cat' => '22,47,67', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'depth' => 1, 'posts_per_page' => get_option('posts_per_page') );
Я надеюсь,что этот ответ поможет кому-то так же,как и мне.Счастливые пользователи Coding Stackexchange
The right answer for your issue is
'posts_per_page' => -1
because-1
will return unlimited posts per page As the others users answer.I just want to add an add-on to this Q/A,
If you want to get the number of posts per page from the reading setting on WordPress Administration Panel you have to call the
get_option()
function and passposts_per_page
as a string to it.$args = array( 'post_type' => 'post', 'cat' => '22,47,67', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'depth' => 1, 'posts_per_page' => get_option('posts_per_page') );
I hope this answer will help someone as it help me. Happy Coding Stackexchange Users
-
Это действительно хорошее дополнение!That's actually a nice addition!
- 0
- 2017-12-29
- Herbert Van-Vliet
-
- 2017-02-22
Или ..
function getAll($arg, $posts_per_page = 50) { $data = array(); $page = 1; do{ $arg['paged'] = $page; $arg['posts_per_page'] = $posts_per_page; $query = new WP_Query($arg); foreach ($query->posts as $post){ $data[] = $post; } $page++; }while(count($query->posts) === $posts_per_page); return $data; }
Or..
function getAll($arg, $posts_per_page = 50) { $data = array(); $page = 1; do{ $arg['paged'] = $page; $arg['posts_per_page'] = $posts_per_page; $query = new WP_Query($arg); foreach ($query->posts as $post){ $data[] = $post; } $page++; }while(count($query->posts) === $posts_per_page); return $data; }
-
Вы должны добавить контекст,чтобы объяснить свой код,вашу идею решения вопроса.You should add context to explain your code, your idea to solve the question.
- 2
- 2017-02-22
- bueltge
Я хочу вернуть ВСЕ сообщения с
query_posts
.Я попытался установить дляposts_per_page
действительно большое число,ноquery_posts
пугает и не возвращает никаких сообщений.Как правильно запрашивать сообщения без ограничений?