Почему не работает сортировка постов (по дате, по заголовку, по дате изменений)?
-
Нашел вариант реализации кастомной сортировки постов (по дате, по заголовку, по дате изменений) в 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' => '‹', 'next_text' => '›', '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' => '‹', 'next_text' => '›', '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
В чем может быть ошибка и как ее исправить?
Просмотр 2 ответов — с 1 по 2 (всего 2)
Просмотр 2 ответов — с 1 по 2 (всего 2)
- Тема «Почему не работает сортировка постов (по дате, по заголовку, по дате изменений)?» закрыта для новых ответов.