Нестандартная сортировка записей в WordPress

В ходе работы над очередным сайтом на базе WordPress (для производственной компании «ВятМех») понадобилось реализовать вывод самых популярных записей из определённой рубрики (в данном случае — каталог продукции). Обычно для этих целей достаточно функции известного плагина WP-PostViews, но он, увы, выводит «рейтинг» только в виде текстовых ссылок на соответствующие посты. Можно было бы переделать вывод плагина (благо, код там вполне понятный), но я это дело не люблю: во-первых, после обновления плагина придётся всё делать заново (мало ли чего там автор перелопатит), а во-вторых, сделать самому — на порядок интересней.
В ходе раскопок «Кодекса» выяснилось, что с некоторых пор у WordPress есть возможность сортировки выборки query_posts по произвольным полям. А упомянутый плагин WP-PostViews как раз эти самые поля для хранения счётчика просмотров и использует. В результате получилось вот такая функция сортировки записей WordPress по количеству просмотров:

4, 'cat' => 6, 'meta_key' => 'views', 'meta_compare' => '>=', 'meta_value' => 0, 'orderby' => 'meta_value_num', 'order' => 'DESC');
query_posts($args);
if ( have_posts() ) while ( have_posts() )
{
the_post();
// далее собственно выводим запись в нужном формате
}
?>

Аргументы в query_posts я специально передаю в виде массива — так понятнее, что и как делается. Ключевая запись здесь 'meta_key' => 'views' — она указывает, что сортировать нужно по мета-полю views. Также обратите внимание на параметры 'meta_compare' и 'meta_value' — они указывают, что сравниваться значения нашего поля будут с нулём (назначения знака '>=', думаю, понятно).
Приведённый код выведет 4 записи из рубрики с ID=6, для которых поле views больше или равно нулю/ При этом записи с наибольшим чистом просмотров будут выведены первыми.

14 комментариев

  1. От ws256

    Ответить

  2. От Роман

    Ответить

  • Ответить

  • От Виктория

    Ответить

    • От Nik

      Ответить

  • От Ян

    Ответить

    • От Nik

      Ответить

  • От Reaktiv

    Ответить

    • От Nik

      Ответить

      • От Reaktiv

        Ответить

      • От Reaktiv

        Ответить

        • От Nik

          Ответить

          • От Reaktiv

        • От Nik

          Ответить

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *