X
    Categories: Новости

Выводим ТОП комментаторов без плагина – быстро и красиво!

Приветствую, друзья!

Сегодня я продолжаю бороться с теми плагинами, которые можно заменить простым кодом или реализовать при помощи скриптов. На очереди плагин, который ранее выводил у меня блок “Лучший комментатор”.

Теперь я заменю его кодом и расскажу подробно, как  реализовать виджет “Лучшие комментаторы” для любого блога на WordPress при помощи кода  и  как настроить данный блок персонально для каждого.

Как я писал ранее, карту сайта sitemap.xml теперь у меня создает плагин all in one Seo Pack, а ранее эти функции выполнял плагин Google sitemap xml, который я удалил.

Теперь настала очередь удалить плагин TOP Commentator Widget, который несколько месяцев выводил у меня блок “Лучший комментатор” на блоге.

Недостатки плагина TOP Commentator Widget

  1. Создание лишней нагрузки на хостинг, которую создает практически любой плагин
  2. Плагин считал ранее у меня комментаторов по имени, а код, который я предлагаю считает по e-mail. Поясню, подробней…

У меня в этом месяце 3 комментатора с именем Денис (Денис, Denis и Denis) и плагин отображал их, как 2 человека – Denis и Денис. Мне приходилось ставить точку в конце имени, чтобы плагин считал отдельно этого читателя (Denis.).

3. Невозможность добавления в виджет  дополнительного html-кода, в котором я размещаю информацию про ежемесячный конкурс  “Лучший комментатор” и денежные призы.

4. Невозможно дополнительно внести коррективы во внешний вид аватарок, их формы (теперь круглые), цвет обводки (теперь коричневый в стиле темы шаблона), стили css и так далее.

Выводим ТОП комментаторов без плагина

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

Для редактирования файлов на хостинге используйте удобный ftp-клиент, как вариант – FileZilla (меня полностью устраивает). Это нужно для того, чтобы можно было вернуть всё назад, восстановить первоначальный вид, если что-то пойдет не так.

ВНИМАНИЕ!

Если у вас ранее на блоге виджет “Лучший комментатор” был реализован кодом или плагином, удалите его, прежде, чем начнете выполнять действия, описанные в посте.

  1. Редактируем файл function.php вашей темы

Заходите в корневую папку блога, затем wp-contenl => ваша тема, установленная на блоге=>> function.php

Открываете данный файл и начинаем редактировать. Скролим в самый низ и находим закрывающийся тег почти в конце файла :

?>;

Это очень важно, обратите внимание!

Кстати, как правильно и красиво выводить коды в статьях на блоге, я писал тут, рекомендую почитать:

Вывести html код в статью вордпресс без плагина

Кстати, это можно сделать без плагина, учтите!

Именно перед тэгом вы вставляете две части кода.

Сначала этот фрагмент (основной) который отвечает за вывод ТОП-комментаторов:

function sp_top_commentator(){ 
global $wpdb; 
$length = 10; // количество символов 
$month = false; // периодичность обновления 
$comment = true; // показатель комментариев 
$nofollow = true; // индексация комментариев 
$count = 6; // количество комментаторов 
$col = 3; // число столбцов
 $avatarSize = 65; // размер аватара 
$exceptionEmail = 'mail@gmail.com, mail@mail.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 width='100%'><tr align='center' valign='top'>"; 
$i = 0; 
foreach($results as $result){ 
if ($i>=$col) { 
$output .= "</tr><tr align='center' valign='top'>"; 
$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; 
}

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

 $exceptionEmail = 'ammin@blog.ru, admin@blogg-life.ru';

Свое значение e-mail (вместо ammin@blog.ru, admin@blogg-life.ru), это необходимо сделать для тех пользователей, которых не нужно показывать в виджете “Лучший комментатор”, например, автор блога или другие администраторы. После того, как вы выберите все параметры в коде, жмите кнопку “Сохранить изменения”

2. Далее открывайте файл style.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 {
-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 #FFD700;
margin: 0 0 3px 0;
}

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

После этого можно слегка переделать стили под вашу тему.

Я, например сделал вывод аватарок круглым, мне так нравится и обводку вокруг аватарок я сделал коричневым цветом.

Вот эта строка:

border: 2px solid #993300;

Вот строка, отвечающая за круглый вывод аватарок:

border-radius: 50%;
 -moz-border-radius: 50%;
 -webkit-border-radius: 50%;

Вот какой код у меня получился, хотите, вставляйте такой же

/*топ комментаторов*/
.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: 2px solid #993300;
border-radius: 50%; -moz-border-radius: 50%; -webkit-border-radius: 50%;

}

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

3. Завершающий этап, вставляем код для вывода виджета

Заходите в административную панель, затем пункт “Внешний вид” =>>”Виджеты” и добавляем виджет “Текст”, после этого редактируем его. Даем имя, например “Топ комментаторов” и вставляем в тело самого виджета следующий код:

<?php sp_top_commentator(); ?>

 

Жмем кнопку “Сохранить” и смотрим на результат, нажав “Посмотреть”. Если всё в порядке, радуемся и пишем об этом своим читателям.

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

Теперь вы научились выводить топ комментаторов без плагина, используя код, представленный в посте. Как вам результат, понравился? У меня в сайдбаре можете посмотреть, что получилось:

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

До встречи!

Интересные статьи по данной теме:

Плагин “заплати лайком”, установка, настройка, использование

Как установить кнопки социальных сетей без плагина

Мне нравится комментировать!

Древовидные комментарии при помощи плагина WordPress Thread Comment

С уважением, Вилков Николай

Хотите в числе первых узнавать о новых статьях и курсах?

Подпишитесь на обновления моего блога и мой канал на YouTube
Если статья вам понравилась, поделитесь с друзьями в социальных сетях. Спасибо!

Николай Вилков :

View Comments (51)

  • Николай добрый день, а как найти закрывающий тег ?>, я в своем файле functions.php, нашел 6 вхождений ?>

    Z:\home\localhost\www\dol\wp-content\themes\time\functions.php (6 hits)
    Line 1578: return preg_replace('#()?()()?#i', '\2', $content);
    Line 1815: if ($attachment->post_content && preg_match('#\s*#i', $attachment->post_content, $matches)) {
    Line 2139: return "".preg_replace('#^(.+?)$#i', '\1', $html).'';
    Line 2214: return preg_replace('##i', '', $breadcrumb);
    Line 2227: $captcha = preg_replace('##', '', $captcha);
    Line 4406: '<a[^]*?href="([^"]*)"[^]*?>\s*(<img[^]*>)([^]*)\s*'.
    Search "?>" (6 hits in 1 file)

    • Дмитрий на строке должна быть только комбинация ?> и всё, в вашем случае это последний вариант.

  • Спасибо, все работает, а то на одном сайте взял код и мой блог вообще слетел. Вопрос, как увеличить размер аватарок комментаторов?

    • Это зависит от того как у вас выводится список комментариев. Искать в любом случае в коммент.пхп либо функцион.пхп ищите параметр avatar_size

      • Дополню, посмотрел ваш шаблон менять в коммент.пхп ищите wp_list_comments() там можно в скобках добавить размер аватара добавив ' avatar_size = 40 ', по умолчанию идет размер 32х32

  • Не размер аватарок, а чтоб бы как у вас в ряду по 3 аватара, а то у меня их 2.

    • Ах это... в самой функции нужно смотреть. По идее $col = 3; // количество колонок вот этот параметр отвечает

  • Колонок 2 поставил и их 2 но в ряду как сделать чтоб было 3 аватара?

  • Добрый день! У меня не работает этот виждет. Не подскажите, в чем может быть дело?

    • Валерий, я уже выше писал много факторов влияют: шаблон,движок сайта, прочие нюансы. Нет единой панацеи для всех, к сожалению((

  • Действительно много факторов влияет. Попробовал на свой страх и риск поставить код (последний раз когда я лез в код - пришлось переустанавливать шаблон ;-) Ну ничего, в этот раз все нормально ))
    Не работает с этой темой. Зато плагин четко выводит. Все дело в том, что на старой теме и плагин не выводил комментаторов.
    Жаль конечно, тоже хотелось разгрузить сервер.

  • Я тоже вывела ТОП комментаторов при помощи скрипта. Плагин не стала устанавливать. Плагин слишком нагружает сервер.

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

  • Спасибо за информацию! Как раз искал то что нужно! Потому как плагины на самом деле грузят хостинг!