Как подключить пагинацию используя функцию get_posts() ?
Очень удобная функция, но не удается заставить работать штатную пагинацию. Поиск в инете выдает рекомендацию использовать вместо нее WP_Query.
Но можно ли как-то подключить пагинацию именно к get_posts()
Пример кода
<?php // begin ПАРАМЕТРЫ цикла (см. get_post) $postslist = get_posts( array( 'posts_per_page' => 1, 'category' => '2', 'post_type' => 'post', 'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ) ) ); // end ПАРАМЕТРЫ цикла (см. get_post) ?> <!-- Цикл (Loop) BEGIN --> <?php foreach ($postslist as $post) : setup_postdata($post); ?> <!-- Вид каждой записи - BEGIN --> <!-- Выводим заголовок поста, как ссылку на сам пост. --> <h2><a href="<?php the_permalink() ?>" title="Ссылка на: <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <!-- миниатюра --> <p> <?php the_post_thumbnail(array(200, 200)); //миниатюра-иконка c размером ?> </p> <!-- Выводим цитату поста в теге div. --> <div class="entry"> <?php the_excerpt(); ?> </div> <!-- Выводим ссылку Читать далее --> <a href="<?php the_permalink(); ?>" rel="bookmark" class="entry-link">Читать далее</a> <!-- Вид каждой записи - END --> <?php endforeach; ?> <?php wp_reset_postdata() ?> <!-- Цикл (Loop) END --> <!-- постраничная навигация BEGIN--> <?php //wplift_pagination(); ?> <div class="nav-previous alignleft"><?php //next_posts_link( 'Предидущие записи' ); ?></div> <div class="nav-next alignright"><?php //previous_posts_link( 'Следующие записи' ); ?></div> <?php the_posts_pagination(); ?> <?php //the_posts_navigation(); ?> <!-- постраничная навигация END-->
Базовая функция работает на основе глобальной $wp_query. Попробуйте использовать WP_Query вместо get_posts(). И запишите результат в глобальную $wp_query. Но предварительно сохраните $wp_query, а после кода верните её в прежнее состояние...
1 вариант:
2 вариант:
Если первый вариант не сработает, попробуйте сделать все это с помощью query_posts():
П.С. Также для понимания проблемы вам могут пригодиться эти статьи:
Спасибо за содержательный ответ. Попробую.
А какой вариант из двух предпочтительнее использовать, первый?
В общем-то нет принципиальной разницы, принцип и тут и там одинаковый: доп запрос и т.д... Какой больше нравится такой используй! Второй вроде покороче будет, можно его...
Навигация на страницу вставилась, но когда перехожу по ссылке 2 например, меняется адрес в адресной строке, а содержимое страницы не меняется .. В чем может быть причина? Посты есть.
Код покажи, по идее должна работать пага.
Вот код, проблема та же... меняется url - но посты остаются теми же..
Ну так ты в запрос то передавай страницу пагинации... Параметр paged в него укажи get_query_var('paged') или в какой переменной там у тебя номер стр пагинации лежит..
П.С. ну вы ребята даете конечно... Ну как же так? Функция - это же не чудеса, ну элементарная же логика, что спросил то и отдает и если ты не спрашиваешь посты со страницы 2, то как же потом можно ждать что вернутся посты со страницы 2?
Нашел на просторах интернета
Ниже приведена базовая конструкция цикла пользовательского запроса с правильно работающими функциями пагинации: