Динамическая сортировка постов
[ ←Вернуться к стандартному виду ]
Перед началом цикла добавляем:
<?php $order = "&orderby=date&order=DESC"; $s2 = ' selected="selected"'; if ($_POST['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s1 = ' selected="selected"'; $s2 = ''; } if ($_POST['select'] == 'newest') { $order = "&orderby=date&order=DESC"; $s2 = ' selected="selected"'; } if ($_POST['select'] == 'oldest') { $order = "&orderby=date&order=ASC"; $s3 = ' selected="selected"'; $s2 = ''; } ?> <form method="post" id="order"> Сортировать по: <select name="select" onchange='this.form.submit()'> <option value="title"<?=$s1?>>по заголовку</option> <option value="newest"<?=$s2?>>по дате (сначала новые)</option> <option value="oldest"<?=$s3?>>по дате (сначала старые)</option> </select> </form> <?php query_posts($order); ?>
Добавим еще сортировку по дате последнего изменения поста, получаем:
<?php $order = "&orderby=date&order=DESC"; $s2 = ' selected="selected"'; if ($_POST['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s1 = ' selected="selected"'; $s2 = ''; } if ($_POST['select'] == 'newest') { $order = "&orderby=date&order=DESC"; $s2 = ' selected="selected"'; } if ($_POST['select'] == 'oldest') { $order = "&orderby=date&order=ASC"; $s3 = ' selected="selected"'; $s2 = ''; } if ($_POST['select'] == 'modified') { $order = "&orderby=modified"; $s4 = ' selected="selected"'; $s3 = ''; } ?> <form method="post" id="order"> Сортировать: <select name="select" onchange='this.form.submit()' style="width:200px"> <option value="title"<?=$s1?>>по заголовку</option> <option value="newest"<?=$s2?>>по дате (сначала новые)</option> <option value="oldest"<?=$s3?>>по дате (сначала старые)</option> <option value="modified"<?=$s4?>>по дате изменения</option> </select> </form> <?php query_posts($order); ?>
Как видите, добавить или убрать фильтр сортировки довольно легко (про параметры query_posts).
Да, кстати, мопед не мой, взяла идею отсюда http://wordpress.org/support/topic/189864?replies=6#post-827607
UPD оказывается код из Темы Dimox'a «каталог статей»
Ха, прикольно. Это мой код, который был взят из моей темы "Каталог статей" =)
не знал куда скинуть. у тебя что-то с rss-кой - http://www.10pix.ru/img1/379817/4944.jpg
Скачала, посмотрела, действительно он :) Интересно, как англоговорящий пользователь расковырял русскоязычную Тему? Русские-то и в китайском копнут если очень надо, а вот англоговорящие как-то не жалуют чужие языки и особенно кириллицу...
Все очень просто - тема, так же, как и плагин, есть и на английском языке =) Поэтому и на форуме текст в коде на английском.
полезный кусочек, спасибки.
только не подумайте, что я спаммер =)
П.с. фид поломался
Что то сложновато ( Но попробую разобраться, просто я пока начинающий типа )
Спасибо!
Извините, а этот код вписывать в index.php шаблона или куда?
И это будет такая настройка в админке или просто на сайте в каждой категории пользователи смогут сами выбирать как сортировать?
teatester, вписывать в тот шаблон Темы, где нужна сортировка постов.
Подскажи, пожалуйста, как сделать чтобы в сортировке участвовала только текущая категория?
Сергей, так текущая только и участвует (имеет смысл этот код вставить в шаблон рубрики category.php)
Спасиб, что-то, может, не так делаю, помещаю в файлик category-1.php, но выборочка делается по всем категориям.
Указал отображение только текущей категории:
…
Отображает текущую категорию, но сортировка не работает.
А само смешное, что pagenavi сума сошел :-) — он видит все категории, но ничего не листается.
Буду пробовать дальше.
Там код не отобразился.
Я через get_posts пытался выбирать категории.
Сергей, попробуйте скрестить
query_posts($order);
и$categoryvariable=$cat; $query= 'cat=' . $categoryvariable. '&posts_per_page=-1'; query_posts($query);
Соника, с вашим кодом выводятся нужные категории, но не сортирует.
&orderby=title&order=ASC&cat=1
Добавил вот такую штучку — работает и сортирует, но теперь при переходе на следующую страницу пейджнави все ломается.
Сделал, хоть немного и не так, если кому интересно пишите на мыло
При добавлении кода ломается pagenavi - есть идеи как пофиксить?
При использовании кода ломается pagenavi в категориях - есть идеи как пофиксить?
У меня тоже глючило.
Сделал без выпадающего списка, а просто ссылками — заработало.
А как сделать ссылками такую сортировку? Можешь показать готовый код?
по заголовку
и так далее
Классная штучка - очень удобно, спасибо... :) Вот такой нюанс: вместо "width:200px;" лучше "width:auto;", а то у меня она очень длинная получилась.
П.С. У меня вроде пощелкал - пейджнави нормально работает... :) Еще бы "по комментариям" и "по просмотрам" и плагины никакие не нужны. ;)
Сергей, это пример для конкретного id категории. А как выглядит код в общем виде? Можете на brainsolid@gmail.com прислать?
По моему оно не работает, ой какой ужас... то ли это сломалось, то ли другое ??? ой, капец... %)
П.С. Пейджнави работает, но все классы не пашут чёй-то, меняю всё... :( Зря радовался... Если получится заменить ПН на самопал, отпишусь здесь.
Соника, подскажите, пожалуйста, а фильтрацию по годам таким образом можно ли сделать?
Вставил ваш код — сортировка работает. Решил переделать, чтобы в выпадающем списке были года, и при выборе года оставались записи только этого года (то етсь не сортировка, а фидьтрация).
Вставляю строчки:
if ($_POST['select'] == '2009') { $order = "&year2009"; $s4 = ' selected="selected"'; $s2 = ''; }
и
<option value="2009">За 2009 год
В раскрывающемся списке появляется "за 2009 год", но при выборе этого пункта остаются так же записи за 2008-й.
Что не так?
Простите за невнимательность, забыл равно в тексте поставить.
Все работает.
А как подобным образом сортировать по рейтингу wp-postratings
Здравствуйте.
А не подскажете каким образом можно сделать динамическую сортировку постов по дополнительному полю (по возрастанию и убыванию)?
Третий день над этим бьюсь уже и ничего не получается(
web ,Николай: плагин WP Smart Sort
Извините, вы сказали добавлять перед началом цикла? Я просто только только начинаю юзать ВродПресс. Где находиться это начало? В какой файл это вставлять?
Виталий: http://codex.wordpress.org/%D0%A6%D0%B8%D0%BA%D0%BB_WordPress
А скажите, нет ли чего-нибудь для статической сортировки постов?
Виталий, видимо вам нужно это: _http://codex.wordpress.org/Template_Tags/query_posts
Но там по английски всё, как русский язык включить?
Виталий, никак, на русском нет. Поищите про query_posts на форумах вордпресс или переведите с помощью он-лайн переводчика.
а можно както сортировать не выпадающим списком,а при нажатии на слово? т.е. у меня есть таблица, и нужно сделать чтобы при нажатии на определенное слово, происходила сортировка по выбраному критерию - наивысший рейтинг, название поста, название категории, к-во отзывов?
michael, погуглите table sort script
Огромное спасибо, sonika
Это только сортировка, а как сделать фильтр с аналогичными выпадающими списками?
Подскажите, может есть фильтр или плагин с помощью которого можно вывести 10 наиболее активных пользователей и количество опубликованых каждым постов
у меня на странице находятся два выпадающих списка, первый нормально формирует ссылку при выборе (сайт.ру/?сат=Х), а второй просто выдает сайт.ру/Х - естественно ссылка не работает, хотя выводятся одинаково следующим образом:
wp_dropdown_categories('child_of=64&orderby=name');
s cript type=text/javascript><!- -
var dropdown = document.getElementById("cat");
function onCatChange() {
if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
location.href = "/?cat="+dropdown.options[dropdown.selectedIndex].value;
}
}
dropdown.onchange = onCatChange;
- ->/s c ript>
как мне сделать, чтобы оба списка работали???
Соника, добрый день! Хотел у Вас попросить помощи, сам уже весь моск сломал. :)
Имеется сортировка вида (там побольше, но общий принцип такой)
if ($_POST['payed'] == "Платные") {$args = "&meta_key=payed_value&meta_value=Да";}
if ($_POST['free'] == "Бесплатные") {$args = "&meta_key=payed_value&meta_value=Нет";}
Выводится все это так:
query_posts($query_string.'&cat=-10,-11,-30'.$sort.$args.$args_1)
Для навигации использую pagenavi. Ну и, собственно, проблема: при переходе на следующие страницы настройки сортировки слетают (и смысла в них, получается, нет). Выводил $query_string эхом: при выборе кнопок сортировки добавляются нужные значения, при переходе на следующие страницу остается только paged=[номер].
Не могли бы Вы хотя бы подсказать, в каком направлении копать? Спасибо, с уважением.
Никак не пойму как добавить запрос на сортировку по рейтингу вида query_posts("gdsr_sort=rating");
в динамическую сортировку Dimox`a типа
if ($_POST['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s1 = ' selected="selected"'; $s2 = ''; }
if ($_POST['select'] == 'newest') { $order = "&orderby=cost&order=DESC"; $s2 = ' selected="selected"'; }
if ($_POST['select'] == 'oldest') { $order = "&orderby=cost&order=ASC"; $s3 = ' selected="selected"'; $s2 = ''; }
if ($_POST['select'] == 'rating_h') { $order = что сюда писать? ; $s4 = ' selected="selected"'; $s3 = ''; }
Подскажите пожалуйста, если вам не сложно :-)
вот интересно, оказалось что если вывод делать как здесь <?php $posts = query_posts(order); ?>, то строка вида
if ($_POST['select'] == 'rating') { $order = "gdsr_sort=rating&sort_order=asc"; $s5 = ' selected="selected"'; $s4 = ''; }
работает, а если вывод сделать как у Dimoxa
<?php $posts = query_posts($query_string . $order); ?>
то сортировка по рейтингу от GD star rating работать перестает, а стандартные сортировки по $orderby работают.
Почему из-за $query_string перестают работать команды GD star rating?
Есть предположения?
Круто вот только навигация не будет работать
ну да так все и оказалось)почему вот зачем именно POST-ом передавать эти какие в этом плюсы, вот GET-ом хоть пагинация не нарушается :( что за стиль программирования у вас такой....
Сортирует, но какой смысл, если навигация не работает???
WP Smart Sort проставил, сортирует, навигация работает, но в ленте по 2 одинаковых поста выходят, а в рубриках ошибка - "не найдено"
Уффф!
Возможна ли реализация данного функционала под ul li "стилизованный select"? Если да то как? Я в этом деле человек новый.
Есть ли вариант сделать сортировку ссылками?
Подскажите, пожалуйста, как сделать, чтобы в разделе новости все посты были не на одной странице, а делились, например, 1,2,3.. страницы или предыдущие записи?спасибо.
что за запись 6 [code='php'] ?????
ломает весь вывод