Страницы страниц с динамическим запросом

У меня есть страница на WordPress, в которой есть серия списков и поисковая панель вверху. Поиск позволяет пользователю фильтровать сообщения, создавая собственный объект WP_Query на основе того, что они выбрали. Мне интересно, есть ли способ, которым это может быть разбито на страницы, чтобы на странице не отображалось сотни результатов.

В основном у меня есть оператор if, чтобы проверить, отправлена ​​ли форма, которая затем заполняет выбранные поля в массив и передает ее в meta_query

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if(isset($_POST['submit'])){ $the_query = new WP_Query(array( 'post_type' => 'business', 'post_status' => 'publish', 'taxonomy' => 'business-type', 'business-type' => 'attraction', 'posts_per_page' => 15, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => $arrays, 'paged' => $paged )); }else{ $the_query = new WP_Query(array( 'post_type' => 'business', 'post_status' => 'publish', 'taxonomy' => 'business-type', 'business-type' => 'attraction', 'posts_per_page' => 15, 'orderby' => 'title', 'order' => 'ASC', 'paged' => $paged )); 

I цикл через запрос, используя while ( $the_query->have_posts() ) : $the_query->the_post();

и после этого; У меня есть разбиение на страницы

 if($the_query->max_num_pages>1){?> <div class="pagination"> <?php if ($paged > 1) { ?> <a href="<?php echo '?paged=' . ($paged -1); //prev link ?>"><</a> <?php } for($i=1;$i<=$the_query->max_num_pages;$i++){ if($paged==$i){?> <span class="current"><?php echo $i; ?></span> <?php }else{?> <a href="<?php echo '?paged=' . $i; ?>" class="inactive"><?php echo $i;?></a> <?php } } if($paged < $the_query->max_num_pages){?> <a href="<?php echo '?paged=' . ($paged + 1); //next link ?>">></a> <?php } ?> </div> 

Solutions Collecting From Web of "Страницы страниц с динамическим запросом"

Я собирался создать свой собственный вопрос и ответить на него, но это выглядит как хорошее место, как любое. Как я решил это, используется $ _SESSION. Имейте в виду, что я использую бесконечный прокрутки, поэтому могу сказать, когда страница загружается с помощью ajax, а не навигация в браузере.

Итак, вот шаги / псевдокод:

  1. Очистить переменные сеанса
  2. Запустите цикл «По умолчанию» и получите html
  3. Пользователь фильтрует результаты -> получить результаты из нового цикла
  4. Задать переменные сеанса, чтобы страница знала, какие циклы запускать
  5. Пользователь прокручивает вниз -> получает результаты с текущей страницы, но для следующей страницы
  6. Эта страница отображает цикл, условно основанный на переменных сеанса
  7. ??????
  8. прибыль

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

На основе кода, который вы опубликовали, вы не передаете какие-либо meta параметры до функции разбиения на страницы. Вам нужно будет создать такие ссылки, как:

 <a href="<?php get_permalink(). '?paged=' . ($paged + 1) . '&meta_key='.$something.'&meta_value='.$somethingelse; //next link ?>">Link Text</a> 

Я предполагаю, что вы обрабатываете эту метаинформацию для своего первоначального запроса где-то, чтобы заполнить $arrays но если вы не передадите эту информацию вместе с последующими запросами, вы получите поиск по умолчанию на страницах 2 и дальше, а не список с разбивкой по страницам, ограниченный выбранный элемент.

Обратите внимание, что я добавил get_permalink в вашу ссылку. Вы использовали относительный URL-адрес, и это вызовет у вас большую душевную боль в WordPress .

Вы также можете посмотреть в paginate_links вместо того, чтобы перематывать свою собственную разбивку на страницы. Это удобно … не нужно, но удобно.