Топ комментаторов – блок, необходимый каждому блогу.

Как сделать блок «Топ комментаторов», без плагина?

Топ комментаторовЗдравствуйте, дорогие друзья! Сегодня очередной хак для worpress — топ комментаторов. Выгоды такого плагина можно описывать очень долго, и список это может быть длинным. Однако самым важным преимуществом является то, что такой блок позволяет сделать ваш сайт популярным и увеличить его трафик. Блоггеры, особенно начинающие знают, обычно посетители сайтов не очень активно комментируют посты. Конечно за исключением «жаренных» тем . Однако если они видят что на сайте присутствует блок топ комментаторов, то сразу начинается движуха и многие из них хотят оказаться на верхней позиции, чтоб ссылка на его сайт появилась на главной странице, а может и на всех страницах вашего блога. Это очень мотивирует посетителей, а самое важное, что выигрывают все.

В связи с тем, что я не люблю использовать плагины в worpress, я покажу как сделать такой блок без плагина. Итак, приступим.

Открываем файл functions.php вашей текущей темы и добавляем в него код представленный ниже.

[warning]СТОП!!! Рекомендую сделать резервную копию вашего файла и сохранить ее на вашем компьютере. Чтоб если что-то пойдет не так, вы могли бы все вернуть обратно.[/warning]

Ну, а теперь сам код:

function sp_top_commentator(){
     global $wpdb;
     $length = 0;
     $month = false
     $comment = true;
     $nofollow = true;

$count = 9;
     $col = 3;

$avatarSize = 40;
     $exceptionEmail = 'pochta@dom.ru, pochta2@mod.ru';

$results = $wpdb->get_results('
         SELECT
             COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
         FROM
             (select * from '.$wpdb->comments.' order by comment_ID desc) as pc
         WHERE
             comment_author_email != "" AND
             comment_type = "" AND
             comment_approved = 1 AND
             comment_author_email NOT IN ('.preg_replace('/([\w\d\.\-_]+@[\w\d\.\-_]+)(,? ?)/','"\\1"\\2',$exceptionEmail).')'.
             ($month ? 'AND month(comment_date) = month(now()) AND year(comment_date) = year(now())' : '').
         'GROUP BY
             comment_author_email
         ORDER BY
             comments_count DESC
         LIMIT '.$count
     );

     $output = "<div class='top-comment'><table><tr>";
     $i = 0;
     foreach($results as $result){
         if ($i>=$col) {
             $output .= "</tr><tr>";
             $i = 0;
         }
         $i++;
         $output .= "<td><div class='avatar-top'>".get_avatar($result->comment_author_email,$avatarSize)."</div><div class='avatar-comment'>";
         if ($length and $length<mb_strlen($result->comment_author)) $result->comment_author = trim(mb_substr($result->comment_author, 0, $length)).'.';
         if ($result->comment_author_url)
             if ($nofollow)
                 $output .= "<a target='_blank' rel='nofollow' href='".$result->comment_author_url."'>".$result->comment_author."</a>";
             else
                 $output .= "<a target='_blank' href='".$result->comment_author_url."'>".$result->comment_author."</a>";
         else
             $output .= $result->comment_author;

         if ($comment) $output .= "(".$result->comments_count.")";
         $output .= "<div style='clear:both;'></div></div></td>";
     }
     if ($i<=$col) $output .= "</tr>";
     $output .= "</table></div>";
     echo $output;
 }

Немного поясню значения данной функции:

$length = 0;  // Длина имени

$month = false;  // true - за текущий месяц, false - за все время
     $comment = true;  // Показывать количество комментариев
     $nofollow = true;  // ссылки nofollow
     $count = 9;   // количество комментаторов
     $col = 3;   // количество колонок
     $avatarSize = 40;   // размер аватара в пикселях
     $exceptionEmail = 'mail1@dom.ru, mail2@mod.ru'; // исключить адреса

Таким образом, мы включили функцию вывода нашего блока, а теперь займемся выводом ее в том месте, где хотим ее видеть. Можно вывести ее в сайдбаре, в футере или в любом другом месте. Я покажу вам, как вывести ее в сайдбаре. Открываем файл sidebar.php и вставляете в него вот эту функцию:

<?php sp_top_commentator(); ?>

Для того чтоб самые активные(победители) за месяц всегда выводились выше других в топе необходимо добавить еще одну функцию:

function sp_commentator_winners(){
     global $wpdb;
     $length = 0

$comment = true
     $nofollow = true;
     $col = 3
     $avatarSize = 40;

$exceptionEmail = 'pochta@dom.ru, pochta2@mod.ru';
     $countWinners = 3;
     $results = $wpdb->get_results('
         SELECT
             COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
         FROM
             (select * from '.$wpdb->comments.' order by comment_ID desc) as pc
         WHERE
             comment_author_email != "" AND
             comment_type = "" AND
             comment_approved = 1 AND
             comment_author_email NOT IN ('.preg_replace('/([\w\d\.\-_]+@[\w\d\.\-_]+)(,? ?)/','"\\1"\\2',$exceptionEmail).') AND
             month(comment_date) = month(now() - interval 1 month)
         GROUP BY
             comment_author_email
         ORDER BY
             comments_count DESC
         LIMIT '.$countWinners
     );

     $output = "<div class='top-comment'><table width='100%'><tr>";
     $i = 0;
     foreach($results as $result){
         if ($i>=$col) {
             $output .= "</tr><tr>";
             $i = 0;
         }
         $i++;
         $output .= "<td><div class='avatar-top'>".get_avatar($result->comment_author_email,$avatarSize)."</div><div class='avatar-comment'>";
         if ($length and $length<mb_strlen($result->comment_author)) $result->comment_author = trim(mb_substr($result->comment_author, 0, $length)).'.';
         if ($result->comment_author_url)
             if ($nofollow)
                 $output .= "<a target='_blank' rel='nofollow' href='".$result->comment_author_url."'>".$result->comment_author."</a>";
             else
                 $output .= "<a target='_blank' href='".$result->comment_author_url."'>".$result->comment_author."</a>";
         else
             $output .= $result->comment_author;

         if ($comment) $output .= "(".$result->comments_count.")";
         $output .= "<div style='clear:both;'></div></div></td>";
     }
     if ($i<=$col) $output .= "</tr>";
     $output .= "</table></div>";
     echo $output;
 }

Функция $countWinners определяет, сколько победителей выводить в блоке. По умолчанию установлено 3, но вы можете изменить это значение на произвольное число. В файл sidebar.php надо добавить еще одну функцию вывода победителей:

<?php sp_commentator_winners(); ?>

Теперь необходимо красиво оформить блок топа комментаторов с помощью CSS стилей. Я думаю, что к вашему шаблону нужно будет написать индивидуальные стили оформления, так как дизайны у всех разные, однако может быть кому-то подойдет и этот код и его не придется редактировать:

.top-comment {
     height:100%;
 }

 .top-comment table {
     min-height: 100%;
     height:100%;
     width:100%;
 }

 .top-comment table tr {
    text-align:center;
    vertical-align: top;
 }

 .top-comment table td {
     padding:0 5px 15px 5px;
 }

 .top-comment .avatar-top img {
     padding: 3px;
     background: white;
     border-image: initial;
     border: 1px solid #D0D0BB;
     margin: 0 0 3px 0;
 }

 .top-comment .avatar-comment {
     font-size: 12px;
 }

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

Удачи Вам в экспериментах и процветания вашего сайта!

 

Автор - Александр

Меня зовут Александр.
Я Вебмастер и SEO — специалист по созданию и продвижению сайтов на WordPress.
В профессиональном интернет-маркетинге c 2007 года. Основные направления: создание и продвижение web-проектов в российском сегменте интернет. Специализация: создание сайтов и их комплексное продвижение, внутренняя оптимизация, внешняя оптимизация, трафиковое продвижение, контентное продвижение...

Связаться со мной >>
Посмотреть все публикации

Ваше имя (обязательно)

Ваш e-mail (обязательно)

Сообщение (обязательно)

"Поставьте галочку, если вы не робот"

и решите пример ответ буквами

комментария 2

  • После ввода вашего кода в functions.php мой сайт исчез с радаров всех компьютеров)))

    Хорошо что была резервная копия файла- быстренько все обратно исправил и больше эксперементировать не стал.

    Так что придется обращаться к профессионалам…

    А этот урок- не для новичков.

    • Александр

      @Михаил, согласен, это не для новичков… Каждая тема индивидуальна, я об этом писал, поэтому лучше обратиться к профессионалам. ))

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

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