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

Сортировка постов в рубрике
Перед началом цикла добавляем:
<?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 «каталог статей»
вот интересно, оказалось что если вывод делать как здесь <?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?
Есть предположения?
Никак не пойму как добавить запрос на сортировку по рейтингу вида 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 = ''; }
Подскажите пожалуйста, если вам не сложно :-)
Соника, добрый день! Хотел у Вас попросить помощи, сам уже весь моск сломал. :)
Имеется сортировка вида (там побольше, но общий принцип такой)
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=[номер].
Не могли бы Вы хотя бы подсказать, в каком направлении копать? Спасибо, с уважением.