Динамическая сортировка постов

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

Печатная версия

Сортировка постов в рубрике

Сортировка постов в рубрике

Перед началом цикла добавляем:

<?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 «каталог статей»


Комментариев: 43, оставить свой »

Страницы: [3] 2 1 » Показать все

  1. # 43 Феликс 11.01.2012 в 18:34

    вот интересно, оказалось что если вывод делать как здесь <?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?

    Есть предположения?

  2. # 42 Феликс 07.01.2012 в 21:42

    Никак не пойму как добавить запрос на сортировку по рейтингу вида 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 = ''; }

    Подскажите пожалуйста, если вам не сложно :-)

  3. # 41 gtauter 06.04.2011 в 18:17

    Соника, добрый день! Хотел у Вас попросить помощи, сам уже весь моск сломал. :)

    Имеется сортировка вида (там побольше, но общий принцип такой)

    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=[номер].

    Не могли бы Вы хотя бы подсказать, в каком направлении копать? Спасибо, с уважением.

Страницы: [3] 2 1 » Показать все

Написать комментарий


Ручная модерация комментов. Все саттелиты — в топку! Даже не сомневайтесь. Для вопросов о вордпресс не по теме поста есть два русскоязычных форума по wordpress.


Subscribe without commenting

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

Печатная версия