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

Здравствуйте, уважаемые читатели моего блога!

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

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

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

Итак, первым делом нам понадобится файл functions.php вашего шаблона WordPress, в самый конец которого перед закрывающим тегом ?> нужно добавить следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function sp_top_commentator(){
global $wpdb;
$length = 0;        // максимальное количество символов в имени, которое будет отображаться. Если указано 0, то имя не обрезается
$month = true;      // период, за который ведется учет комментариев: true - за текущий месяц, false - за все время
$comment = true;    // true - показывать количество комментариев, false - нет
$nofollow = true;   // true - ссылки на URL комментатора закрыты тегом nofollow, false - открыты
$count = 9;         // количество комментаторов, которое будет отображаться в списке
$col = 3;           // количество колонок, на которое будет разбит список
$avatarSize = 40;   // размер аватара в пикселях
$exceptionEmail = ''; // адреса email, комментаторы с которыми не будут отображаться в списке
$lengthMin = 10;    // минимальное количество символов в учитываемом комментарии
$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.' where CHAR_LENGTH(comment_content) > '. $lengthMin .' 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,
comment_ID ASC
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;
}

Для этого можно воспользоваться либо встроенным в WordPress редактором, либо использовать сторонний текстовый редактор (рекомендую notepad++) и доступ к файлам на хостинге с помощью FTP-клиента (как настроить FTP-клиент читайте здесь).

Обратите внимание на закомментированные пояснения в данном коде, которые помогут вам произвести необходимые изменения и настроить отображаемый список комментаторов по вашему усмотрению.

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

1
<?php sp_top_commentator(); ?>

Минимальные знания устройства шаблона WordPress здесь будут кстати. К примеру, если вы хотите отображать список комментаторов в футере, то вставлять данный код нужно в файл footer.php. Все просто!

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

Осталось настроить стили CSS, для чего в файл style.css (удобнее всего в самый конец) вашего шаблона WordPress добавляем код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.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;
}

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

Напоследок должен упомянуть о том, что для нормального отображения аватаров в списке топ комментаторов блога, в разделе настроек самой WordPress ПараметрыОбсуждениеОтображение аватаров должна стоять галочка в чекбоксе Показывать аватары:

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

Результат всей проделанной работы должен выглядеть примерно так:

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

Именно рассмотренным в данной статье способом можно сделать отображение топ комментаторов блога без плагина.

На этом все! Подписывайтесь на обновления моего блога, чтобы быть в курсе новых публикаций!

С уважением, Владимир Денисов!

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

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