Поддержка Проблемы и решения Фильтр записей используя WP_Query и пагинацию

  • Есть форма с 2 кнопками(последние и популярные), при выборе должно выводить записи соответствующие. Т.е. после выбора популярные я передаю аргументы в WP_Query и вывожу записи.

    if ($_POST['btnval'] == 'popular') {
             $args=array(
     'post_type' => 'post',
        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'paged' => $paged,
        'offset' => $offset,
    );
        } elseif ($_POST['btnval'] == 'latest') {
             $args=array(
        'post_type' => 'post',
        'paged' => $paged,
        'offset' => $offset,
    );
        } else {
            $args=array(
        'post_type' => 'post',
        'paged' => $paged,
        'offset' => $offset,
    );
        }
    
        $team = new WP_Query($args);
        if ($team->have_posts()) :
    
        while ($team->have_posts()) : $team->the_post();
        ...
        endwhile; 
        endif; 
        if (function_exists('kama_pagenavi')) kama_pagenavi();
        wp_reset_query();

    Проблема: При нажатии на пагинацию все слетает, становится как было до фильтрации. Как соединить это с пагинацией? Т.е. после перехода допустим на 2 страницу так же записи и шли по убиванию просмотров.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Yuri

    (@yube)

    Попробуйте передавать в GET с сохранением в урле параметра сортировки. Если не хочется портить внешний вид урлов get-параметром, сохраняйте выбранное юзером значение в куках.

    Спасибо за наводку, разобрался. Использовалась пагинация kama_pagenavi старой версии, поменял на новую и изменил на _GET и kama_pagenavi($team);, теперь все передается.

    • Ответ изменён 5 лет, 4 месяца назад пользователем diias.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Фильтр записей используя WP_Query и пагинацию» закрыта для новых ответов.