Динамическая сортировка постов
[ ←Вернуться к стандартному виду ]

Сортировка постов в рубрике
Перед началом цикла добавляем:
<?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 «каталог статей»
у меня на странице находятся два выпадающих списка, первый нормально формирует ссылку при выборе (сайт.ру/?сат=Х), а второй просто выдает сайт.ру/Х — естественно ссылка не работает, хотя выводятся одинаково следующим образом:
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>как мне сделать, чтобы оба списка работали???
Подскажите, может есть фильтр или плагин с помощью которого можно вывести 10 наиболее активных пользователей и количество опубликованых каждым постов
Это только сортировка, а как сделать фильтр с аналогичными выпадающими списками?
Огромное спасибо, sonika
michael, погуглите table sort script
а можно както сортировать не выпадающим списком,а при нажатии на слово? т.е. у меня есть таблица, и нужно сделать чтобы при нажатии на определенное слово, происходила сортировка по выбраному критерию — наивысший рейтинг, название поста, название категории, к-во отзывов?
Виталий, никак, на русском нет. Поищите про query_posts на форумах вордпресс или переведите с помощью он-лайн переводчика.
Но там по английски всё, как русский язык включить?
Виталий, видимо вам нужно это: _http://codex.wordpress.org/Template_Tags/query_posts
А скажите, нет ли чего-нибудь для статической сортировки постов?
Виталий:
Извините, вы сказали добавлять перед началом цикла? Я просто только только начинаю юзать ВродПресс. Где находиться это начало? В какой файл это вставлять?
web ,Николай: плагин WP Smart Sort
Здравствуйте.
А не подскажете каким образом можно сделать динамическую сортировку постов по дополнительному полю (по возрастанию и убыванию)?
Третий день над этим бьюсь уже и ничего не получается(
А как подобным образом сортировать по рейтингу wp-postratings
Простите за невнимательность, забыл равно в тексте поставить.
Все работает.
Соника, подскажите, пожалуйста, а фильтрацию по годам таким образом можно ли сделать?
Вставил ваш код — сортировка работает. Решил переделать, чтобы в выпадающем списке были года, и при выборе года оставались записи только этого года (то етсь не сортировка, а фидьтрация).
Вставляю строчки:
if ($_POST ['select']== '2009') { $order = «&year2009»; $s4 = ' selected="selected"'; $s2 = ''; }
и
<option value="2009">За 2009 год
В раскрывающемся списке появляется «за 2009 год», но при выборе этого пункта остаются так же записи за 2008-й.
Что не так?
По моему оно не работает, ой какой ужас... то ли это сломалось, то ли другое ??? ой, капец... %)
П.С. Пейджнави работает, но все классы не пашут чёй-то, меняю всё... :( Зря радовался... Если получится заменить ПН на самопал, отпишусь здесь.
Сергей, это пример для конкретного id категории. А как выглядит код в общем виде? Можете на brainsolid@gmail.com прислать?
Классная штучка — очень удобно, спасибо... :) Вот такой нюанс: вместо «width:200px;» лучше «width:auto;», а то у меня она очень длинная получилась.
П.С. У меня вроде пощелкал — пейджнави нормально работает... :) Еще бы «по комментариям» и «по просмотрам» и плагины никакие не нужны. ;)