Функция для вывода записей по количеству просмотров

Как вывести самые просматриваемые записиВсем привет! В одной из прошлых статей я говорил как подсчитать количество посещений страниц сегодня же логичное продолжение — функция, которая делает вывод популярных записей, иначе вывод записей по числу просмотров.

Чтобы это сделать для начала установите к себе на блог функцию подсчета просмотров, а затем можно и выводить эти записи.

Без лишних слов сразу показываю эту функцию:

Функция вывода популярных записей на блоге

Для начала идем из админки WordPress в Редактор кода шаблона и выбираем файл functions.php, ставить код надо до знака ?>. Вот и сама функция:

  1.   /** Функция для вывода записей по произвольному полю содержащему числовое значение.
  2.     ————————————-
  3.     */
  4.     function get_most_viewed($args=»){
  5.         parse_str($args, $i);
  6.         $num    = isset($i[‘num’]) ? $i[‘num’]:10;
  7.         $key    = isset($i[‘key’]) ? $i[‘key’]:’views’;
  8.         $order  = isset($i[‘order’]) ? ‘ASC’:’DESC’;
  9.         $cache  = isset($i[‘cache’]) ? 1:0;
  10.         $days   = isset($i[‘days’]) ? (int)$i[‘days’]:0;
  11.         $echo   = isset($i[‘echo’]) ? 0:1;
  12.         $format = isset($i[‘format’]) ? stripslashes($i[‘format’]):0;
  13.         global $wpdb,$post;
  14.         $cur_postID = $post->ID;
  15.         if( $cache ){ $cache_key = (string) md5( __FUNCTION__ . serialize($args) );
  16.             if ( $cache_out = wp_cache_get($cache_key) ){ //получаем и отдаем кеш если он есть
  17.                 if ($echo) return print($cache_out); else return $cache_out;
  18.             }
  19.         }
  20.         if( $days ){
  21.             $AND_days = «AND post_date > CURDATE() — INTERVAL $days DAY»;
  22.             if( strlen($days)==4 )
  23.                 $AND_days = «AND YEAR(post_date)=» . $days;
  24.         }
  25.         $sql = «SELECT p.ID, p.post_title, p.post_date, p.guid, p.comment_count, (pm.meta_value+0) AS views
  26.        FROM $wpdb->posts p
  27.            LEFT JOIN $wpdb->postmeta pm ON (pm.post_id = p.ID)
  28.        WHERE pm.meta_key = ‘$key’ $AND_days
  29.            AND p.post_type = ‘post’
  30.            AND p.post_status = ‘publish’
  31.        ORDER BY views $order LIMIT $num»;
  32.         $results = $wpdb->get_results($sql);
  33.         if( !$results ) return false;
  34.         $out= »;
  35.         preg_match( ‘!{date:(.*?)}!’, $format, $date_m );
  36.         foreach( $results as $pst ){
  37.             $x == ‘li1’ ? $x = ‘li2’ : $x = ‘li1’;
  38.             if ( (int)$pst->ID == (int)$cur_postID ) $x .= » current-item»;
  39.             $Title = $pst->post_title;
  40.             $a1 = «<a href='». get_permalink($pst->ID) .»‘ title='{$pst->views} просмотров: $Title’>»;
  41.             $a2 = «</a>»;
  42.             $comments = $pst->comment_count;
  43.             $views = $pst->views;
  44.             if( $format ){
  45.                 $date = apply_filters(‘the_time’, mysql2date($date_m[1],$pst->post_date));
  46.                 $Sformat = str_replace ($date_m[0], $date, $format);
  47.                 $Sformat = str_replace(array(‘{a}’,'{title}’,'{/a}’,'{comments}’,'{views}’), array($a1,$Title,$a2,$comments,$views), $Sformat);
  48.             }
  49.             else $Sformat = $a1.$Title.$a2;
  50.             $out .= «<li class=’$x’>$Sformat</li>»;
  51.         }
  52.         if( $cache ) wp_cache_add($cache_key, $out);
  53.         if( $echo )
  54.             return print $out;
  55.         else
  56.             return $out;
  57.     }

Объясню, какие параметры можно изменить в функции и за что они отвечают:

  • num — какое количество постов выводить в списке;
  • key — название ключа произвольного поля, выборка происходит по его значению. В функции подсчета просмотров страниц используется ключ «Просмотров», поэтому здесь оставляем также «Просмотров».
  • format — это формат ссылок, которые выводятся. Исходный формат такой: {a}{title}{/a}. Можно редактировать параметр, добавив туда следующие значени:
    * {comments} — вывод количества комментариев у статьи;
    * {title} — заголовок статьи;
    * {date:j.M.Y} — дата в формате j.M.Y (31.Авг.2012);
    * {a} и {/a} — тег ссылки. Открывается и закрывается.
    * {views} — количество просмотров статьи.
  • days — за какое время выводить самые просматриваемые записи. То есть, если укажите этот код, то выводиться будут просматриваемые статьи за этот год.
  • cache — Включить кэш или нет. 1 — включить, 0 — нет ( стоит по дефолту). Работает только с плагинами кэширования, поэтому включать не надо.
  • echo — выводить или возвращать на обработку. По дефолту стоит 1 — выводить на экран, 0 — вернуть на обработку.

Сохраняем изменения в файле и переходим к выводу самых просматриваемых постов. Для этого в то место, где надо показывать их вставляем код:

  1. <ul>
  2.     <?php get_most_viewed(«num=10»); ?>
  3. </ul>

Данный код можно добавить в виджет вашего сайта, показывая записи в сайдбаре. Здесь можно изменить только одно значение: num=10, которое отвечает сколько выводить постов.

Примеры вывода записей

1. Возьмем для примера, что нам надо вывести 12 популярных записей, а также добавим к этому title статьи, дату публикации, ее просмотры и количество комментариев.

  1. <ul>
  2.   <?php get_most_viewed(«num=12 &format={a}{title}{/a} — {date:j.M.Y} ({views}, {comments})»); ?>
  3. </ul>

Отображаться такой списко будет в формате «Заголовок статьи — 31.Авг.2012 (100, 10)» 100 — это просмотров, 10 комментариев.

2. Допустим надо вывести 1 самых просматриваемых записей за 2 месяца:

  1. <ul>
  2.    <?php get_most_viewed(«num=10 &days=60»); ?>
  3. </ul>

На этом и все. Думаю, у многих и не возникнет надобности в этом, ведь в каких-то шаблонах уже есть виджеты вывода просматриваемых записей.


Похожие записи:

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

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

Похожие записи: