Разбивка на страницы пользовательского запроса WordPress

У меня есть сайт WordPress, где на главной странице я перечисляю контент из большего количества категорий.

Мой вопрос: есть ли плагин, в котором я могу разбивать результаты по категориям? Я имею в виду что-то вроде $this->plugin_paginate('category_id'); или что-то в этом роде?

С уважением,


person Uffo    schedule 18.11.2009    source источник


Ответы (4)


Если вы используете стандартный цикл Wordpress, даже с query_posts для категории, нумерация страниц выполняется автоматически с обычным posts_nav_link. Вы пытаетесь разбить на страницы более одного запроса и более одной категории на одной странице?

Редактировать 20 ноября: я использую это в нескольких разных местах на одной странице, чтобы показать последний пост в категории:

<?php
$my_query = new WP_Query('category_name=mycategory&showposts=1');
while ($my_query->have_posts()) : $my_query->the_post();
?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php endwhile; ?>

Затем эта ссылка ведет на страницу категории, которая разбивается на страницы для этой категории: Шаблоны категорий « Кодекс WordPress

Я не знаю, как разбивать разные категории на одной странице. Должно быть возможно. Можете задать вопрос на форумах Wordpress.

person markratledge    schedule 19.11.2009

Это похоже на то, что может сделать простой правильно сформированный вызов query_posts(). Я сомневаюсь, что вам даже нужно полагаться на плагин. :)

Я предполагаю, что вы знакомы с функцией query_posts(), так что давайте продолжим и возьмем этот пример за основу:

// let's get the first 10 posts from category ID 3
query_posts('posts_per_page=10&cat=3');
while(have_posts()):the_post();
    // do Wordpress magic right here
endwhile;

Теперь, чтобы получить сообщения с 11-го по 20-е из категории 3 (то есть СЛЕДУЮЩИЕ 10 сообщений), мы будем использовать параметр [offset] в query_posts():

// let's get the next 10 posts from category ID 3
query_posts('posts_per_page=10&cat=3&offset=10');
while(have_posts()):the_post();
    // do Wordpress magic right here
endwhile;

Для большинства целей этого должно быть достаточно. Тем не менее, вы упомянули, что планируете разбивать списки сообщений категорий только с главной страницы? Я предполагаю, что вы имеете в виду, что у вас есть несколько списков сообщений категории на вашей главной странице, и все они разбиты на страницы независимо.

Что-то вроде этого, похоже, вам придется немного поработать с Javascript, чтобы сделать работу за вас, наряду с тем, что я проиллюстрировал выше.

person Richard Neil Ilagan    schedule 22.04.2010

Я считаю, что вы могли бы сделать что-то вроде этого:

    <?php
        if(isset($_GET['paged'])){
            $page = $_GET['paged']-1;
        }else{
            $page = 0;
        }
        $postsPerPage = 5;
        $theOffset = $page*$postsPerPage;
    ?>
    <?php query_posts(array('posts_per_page' => $postsPerPage, 'cat' => CATEGORIES HERE, 'offset' => $theOffset)); ?>
person user433351    schedule 25.09.2012

Надеюсь, что это поможет вам :)

<?php
   $args = array(
  'post_type' => 'post',
  'posts_per_page' => 5,
  'paged' => $page,
  );

  query_posts($args);?>
?>
person Ajay Malhotra    schedule 29.07.2013