Как сделать топ комментаторов без плагина

Приветствую друзья! Тема сегодняшнего поста, как сделать топ комментаторов без плагина.
Сделать интересный Топ комментаторов можно и без плагина с помощью PHP кода. Плагины значительно замедляют работу блога и многие заменяют их кодом.

У меня такой был, слева изображение моего бывшего Топа блога. Cделаем Топ комментаторов с помощью кода.topkommentatorbezplagina

Плюсы применения Топ комментаторов

  • Во первых, повышает уровень поведенческих факторов. Подробнее о поведенческих факторах читайте здесь. Топ комментаторов привлекает внимание посетителей и читателей блога. Интересно же узнать кто комментирует блог, если у них самих блоги. Это задерживает внимание посетителей, они читают комментарии, сами пишут их. И поведенческие факторы влияющие на поисковую выдачу повышаются, и блог получает большую посещаемость.
  • Во вторых, с помощью Топа комментаторов удобно организовывать конкурсы комментаторов. Ранее и у меня на блоге был конкурс случайный комментатор.
    Вообще, топ комментаторов можно сделать  с помощью специального плагина. Но лишние плагины нагружают блог и скорость загрузки страниц падает, и в поисковой выдаче блог будет ниже.

К тому же мне нужен был особенный топ комментаторов. Который отображал бы необходимое количество комментаторов, и в конце месяца сам подводил итоги. Поэтому Топ комментаторов реализовал с помощью кода встраиваемого в тему WordPress.

Топ комментаторов на WordPress без плагина

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

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

Либо можно зайти на свой хостинг в свой аккаунт через FTP соединение через WinSCP, или подобную программу.  Сделать копии файлов functions.php и sidebar.php, туда будем вводить код. В случае неудачи можно обратно закачать в свой аккаунт не тронутые файлы.

Топ комментаторов с PHP кодом

Код расположенный ниже вставляем в файл functions.php.
[spoiler title=»Чтобы посмотреть код нажмите здесь»]

function sp_top_commentator_winners(){
global $wpdb;
$length = 0; // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается
$month = true; // true — за текущий месяц, false — за все время
$comment = true; // показывать количество комментариев
$nofollow = true; // ссылки nofollow
$count = 24; // количество комментаторов
$col = 3; // количество колонок
$avatarSize = 40; // размер аватара
$exceptionEmail = ‘strels111@gmail.com’; // мыла-исключения

$showWinners = true; // показывать победителей
$countWinners = 3; // количество победителей
$showDays = 7; // количество дней, которое показываются победители
$separator = ‘<hr style=»display:block;»>’; // разделитель ТОПа и победителей

$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
);

$firstIteration = true; // отвечает за то чтобы было всего две итерации
do {
$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;

if ($showWinners and date(‘j’) <= $showDays and $firstIteration) {
$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
);
echo $separator;
$firstIteration = false;
} else {
$showWinners = false;
}
} while($showWinners);
}

[/spoiler]

Теперь вставляем код в файл style.css отвечающий за стиль отображения Топа комментаторов. Тут можно подобрать стили по стилю своего блога.

Я ничего здесь не менял, меня все устроило.[spoiler title=»что бы посмотреть нажмите здесь.»]

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 {
-webkit-box-shadow: #666 0px 2px 3px;
-moz-box-shadow: #666 0px 2px 3px;
box-shadow: #666 0px 2px 3px;
padding: 3px;
background: white;
border-image: initial;
border: 1px solid #D0D0BB;
margin: 0 0 3px 0;
}

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

[/spoiler]

Осталось вставить код функции в нужное нам место, у меня это сайд бар справа, вставляем в виджет с текстом. Например, «Узнай, кто самый активный комментатор блога» и далее вставляем код.

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

[spoiler title=»нажмите что бы посмотреть.»]<noindex><nofollow>
<?php sp_top_commentator_winners(); ?></nofollow></noindex>[/spoiler]

Осталось проверить как все функционирует и порадоваться, что все получилось!

Ссылка на основную публикацию