@TuMko

Почему не работает сортировка постов (по дате, по заголовку, по дате изменений)?

Нашел вариант реализации кастомной сортировки постов (по дате, по заголовку, по дате изменений) в Wordpress, мой код:
<div class="toolbar-block">
												<?php

													if (isset($_GET['select']) && $_GET['select'] == 'newest') { $order = "&orderby=date&order=DESC"; $s1 = ' selected="selected"'; }
													if (isset($_GET['select']) && $_GET['select'] == 'lastest') { $order = "&orderby=date&order=ASC"; $s2 = ' selected="selected"'; }
													if (isset($_GET['select']) && $_GET['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s3 = ' selected="selected"'; }
													if (isset($_GET['select']) && $_GET['select'] == 'correct') { $order = "&orderby=modified"; $s4 = ' selected="selected"'; }
												?>
													<form method="get" id="order">
													<select name="select" onchange='this.form.submit()' style="width:200px">
													<option value="newest"<?php $s1?>>по дате (сначала новые)</option>
													<option value="lastest"<?php $s2?>>по дате (сначала старые)</option>
													<option value="title"<?php $s3?>>по заголовку</option>
													<option value="correct"<?php $s4?>>по дате изменения</option>
													</select>
													</form>

												<?php global $query_string; // параметры базового запроса
													query_posts($query_string.'&'.$order); // базовый запрос + свои параметры
												?>

											</div>
											
										<?php
											if ( have_posts() ) : // если имеются записи в блоге.
											  //query_posts('cat=5');   // указываем ID рубрик, которые необходимо вывести.
											  $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
											  query_posts("category_name=news&paged=$page");

										?>

											<!-- post-navigation  -->
											<div class="toolbar clearfix">	
												<div class="toolbar-block">
													<div class="toolbar-paginations">
														
														<?php if( is_paged() ){ ?>
														<p>Страница:</p>
														<?php } ?>

														<?php the_posts_pagination(array(
																'show_all'     => false, // показаны все страницы участвующие в пагинации
																'prev_text'    => '&lsaquo;',
																'next_text'    => '&rsaquo;',
																'type'         => 'list',
																'end_size'     => 3, // количество страниц на концах
																'mid_size'     => 3,  // количество страниц вокруг текущей
														)); 
														?>

													</div>
												</div>
											</div> <!--/ toolbar -->
										<?php
											  while (have_posts()) : the_post();  // запускаем цикл обхода материалов блога
										?>
											<div class="toolbar clearfix">
												<div class="news-container clearfix">
													<div class="news-container__thumb">
														<a href="<?php the_permalink(); ?>">
															
															<?php if(has_post_thumbnail()): ?>
																<?php the_post_thumbnail(); ?>
																	<?php else: ?>
																		<img src="assets/img/news/attention.jpg" alt="">
																<?php endif; ?>
														</a>
													</div><!-- /.news-container__thumb -->
													<div class="news-container__text">
														<a href="<?php the_permalink(); ?>">
															<?php the_title(); ?>
														</a>
														<span><?php the_time('j F Y'); ?></span>
														<?php the_content();?>
													</div><!-- /.news-container__text -->
												</div><!-- /.news-container -->
											</div> <!--/ toolbar -->

											<?php endwhile; // завершаем цикл. ?> 

												<!-- post-navigation  -->
												<div class="toolbar clearfix">
													<div class="toolbar-block">
														<div class="toolbar-paginations">
															<?php if( is_paged() ){ ?>
															<p>Страница:</p>
															<?php } ?>

															<?php the_posts_pagination(array(
																	'show_all'     => false, // показаны все страницы участвующие в пагинации
																	'prev_text'    => '&lsaquo;',
																	'next_text'    => '&rsaquo;',
																	'type'         => 'list',
																	'end_size'     => 3, // количество страниц на концах
																	'mid_size'     => 3,  // количество страниц вокруг текущей
															)); 
															?>

														</div>
													</div>
												</div> <!-- /toolbar -->

											<?php else: ?>

												<p>Новостей нет.</p>

											<?php endif; ?>
											
											<?php /* Сбрасываем настройки цикла. Если ниже по коду будет идти еще один цикл, чтобы не было сбоя. */ ?>
											<?php wp_reset_query();  ?>

+ код скрипта:
jQuery(document).ready(function($){

		var paramsString = location.search
		var searchParams = new URLSearchParams(paramsString);

		//Iterate the search parameters.
		for (let p of searchParams) {
		  console.log(p);
		}


		//Сортировка select

		$('#sort').change(function(){

		var sortValues = $("#sort option:selected").val(); //получаем значение выбранного пункта select

		if($("#sort").val()=="") { 
				
				searchParams.delete("select");
				window.history.replaceState({}, '', location.pathname + '?' + searchParams);
				location.reload(); //перезагрузить старницу (для ajax не нужно)
				
		} else {
				
				searchParams.set("select", sortValues);
				window.history.replaceState({}, '', location.pathname + '?' + searchParams);
				location.reload(); //перезагрузить страницу (для ajax не нужно)
				
		}

		});

		});

Избавился от ошибок, но сортировка по прежнему не работает. Есть подозрения, что это связано с вызовом query_posts, которая нужна для отображения определенной категории (id=5) на отдельной странице page-news.php

В чем может быть ошибка и как ее исправить?
  • Вопрос задан
  • 251 просмотр
Пригласить эксперта
Ответы на вопрос 1
@anton_trofimov95
Вот на этом сайтеприменил только 1 твой код в файле, где посты выводятся перед самим выводом постов - все заработало 5c7cd5245fa0a964166196.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы