@lexstile

Как переделать запрос get_posts на query_posts с пагинацией в данном случае?

<?php $posts = get_posts ("post_type=events&numberposts=-1&orderby=ID&order=DESC"); ?> 
				<?php if ($posts) : ?>
				<?php foreach ($posts as $post) : setup_postdata ($post); ?>
				<?if(date("Ymd") > get_post_meta(get_the_ID(),'date_end',true)):?>
					<div class="main-news">
					<p><?=get_the_title();?></p>
					<a href="<?=get_permalink();?>">
					<p class="pre_photo_news">
					<?if(get_the_post_thumbnail() !== ''){
						echo get_the_post_thumbnail();
					}else{?>
						<img src="/wp-content/themes/test/images/no-avatar.gif" class="attachment-post-thumbnail wp-post-image" alt="Изображение не установлено">
					<?}?>
					</p>
					</a>
					<a class="button-main" href="<?=get_permalink();?>" title="<?=get_the_title();?>" >ПОДРОБНЕЕ</a> 
					</div>
				<?endif?>
				<?php 
				  endforeach;
				  wp_reset_postdata();
				?>
				<?php endif; ?>
  • Вопрос задан
  • 405 просмотров
Пригласить эксперта
Ответы на вопрос 3
@WQP
Используйте wp-kama.ru/function/wp_query там есть wp-kama.ru/function/wp_query#parametry-paginatsii
Метод get_posts очень медленный.
Ответ написан
trampick
@trampick
Веб-разработчик
У тебя numberposts=-1 - это значит выводить все посты.

Вообще конфликт с пагинацией бывает если у тебя в запросе стоит количество постов одно, а в админке->настройки->чтение другое количество.
Лечится это тем что вызывается
global $wp_query;
Там находишь запрос текущий и заменяешь его на свой(не помню точно как там свойство называется).
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Это в каком шаблоне? Это главный запрос, главный цикл? Или вторичный где-нибудь в сайдбаре или под основным контентом?

query_posts использовать ни в коем случае нельзя. Эта функция модифицирует глобальный $wp_query и наносит непоправимый ущерб всему, что завязано на глобальный запрос. А это - половина всего, включая, в первую очередь, пагинацию.

Что использовать в вашем случае - get_posts, WP_Query или хук pre_get_posts - зависит от более точного определения задачи (смотрите мои вопросы выше).

Вот тут читайте мой развернутый ответ по этой кухне.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы