WP_query и пагинация?

У меня есть кастомный тип поста и я пытаюсь получить его с помощью WP_Query (query_posts не работает).

Как реализовать пагинацию? Все что я пробовал — не работает. Любая помощь, у меня ничего не получилось.

$args = array(
'tax_query' => array(
   'posts_per_page' => 5,
    array(
    'author' => $user_id,
        'taxonomy' => 'custom_taxtype',
        'field' => 'slug',
        'terms' => 'delicious-food',
    )
) 
); 
$answer_query = new WP_Query( $args );

//// зацикливаем результат

while ( $answer_query->have_posts() ) : $answer_query->the_post();

//// выводим

endwhile;
Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 11
  1. Женя

    Я установил его, но с ним можно просто выбрать, какую страницу я хочу, и не получается заставить пагинацию работать. Я использую функцию wordpress next_posts_link(); для разбивки на страницы.

  2. Роман

    Если вы сможете лучше сформулировать свой вопрос — постараемся дать более полный ответ )

    <?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $args = array(
                   'post_type' => 'question',
                   'posts_per_page' => -1,
                   'paged' => $paged,
                   'author' => $user_id
                );
    $my_query = new WP_Query($args);
    
    if($my_query->have_posts()):
        while($my_query->have_posts()):$my_query->the_post();
            //Loop goes here...
        endwhile;
        //support for page-navi plugin, please refer readme.txt for further instructions
        if ( function_exists('wp_pagenavi') )
        {
            wp_pagenavi();
        }
        elseif ( get_next_posts_link() || get_previous_posts_link() )
        {
            ?>
            <div class="wp-navigation clearfix">
                <div class="alignleft"><?php //next_posts_link('&laquo; Older Entries'); ?></div>
                <div class="alignright"><?php //previous_posts_link('Newer Entries &raquo;'); ?></div>
            </div>
    <?php } //if wp_pagenavi
    endif;
    ?>
    

    Проверьте WP_Query чтобы посмотреть все параметры

    кстати, query_posts так же работает с кастомными постами, и принимает все параметры, как и WP_Query.

    1. Женя

      Спасибо, Роман. Я просто хочу получить все записи из кастомного типа постов, называемого questions, и у этого пользовательского типа записей есть рубрики, которые определяются как пользовательские термины. С помощью запроса выше я могу получить последние посты для определенного кастомного термина, но не могу получить разбивку на страницы. Вот в чем проблема.

    2. Роман

      А вы установили WP-Pagenavi? Я пропустил эту часть, проверьте новый код в моем ответе. Я добавил часть с разбивкой на страницы.

    3. Александр

      Отличная работа! :)

    4. Женя

      Большое спасибо! Да, теперь все работает. Я немного изменил код и использовал код отсюда wordpress.org

  3. soul

    Добавьте аргумент paged => 1,2...n и думаю что posts_per_page, как и paged должно быть за массивом tax_query.

  4. Женя

    Спасибо, только что сделал это, теперь количество постов получается ограничить. Неплохо )

  5. Ник

    если вы поменяете переменную $my_query на $wp_query — тогда код заработает. Код во встроенной в WordPress функции next_posts_link и previous_posts_link как раз ждет, что объект запроса будет называться $wp_query.

    1. Дмитрий

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

  6. soul

    А вы добавили paged и присвоили нужный номер страницы, которую ищете?

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: