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

Добрый день, друзья! В начале месяца я запустила конкурс «Комментатор месяца» и установила виджет Топ комментаторов, так как без него конкурс провести трудно.

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

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

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

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

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

Нам нужно будет внести изменения в следующие файлы: functions.php, style.css и sidebar.php.  Если вы захотите вставить топ в подвал темы, то вам понадобится файл footer.php.

Очень советую сохранить сначала все  эти файлы себе на компьютер, чтобы легко можно было все восстановить, если что-то пойдет не так.

1. Сначала в файл functions.php перед закрывающим тегом ?> вставляем код:

 FUNCTION sp_top_commentator(){ 
global $wpdb; 
$length = 9; // количество символов 
$month = true; // периодичность обновления 
$comment = true; // показатель комментариев 
$nofollow = true; // индексация комментариев 
$count = 4; // количество комментаторов 
$col = 2; // число столбцов 
$avatarSize = 70; // размер аватара 
$exceptionEmail = 'evgeniyakuvarina@gmail.com'; // исключение адреса 
$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; 
}

 

Поясню некоторые значения:

 $length — количество символов в имени комментатора. Не указывайте слишком много символов: после длинного имени следующая аватарка отображается немного криво.

month — частота обновления топа. Если хотите, чтобы топ обновлялся каждый месяц ставьте true, если нет, то false.

$comment — количество отзывов: true — отображается, false — нет.

$nofollow — индексация ссылок. Для запрещения индексации поставьте true.

$count — число комментаторов, отображающихся в топе. Выбираете по вашему усмотрению.

$col — число столбцов

$avatarsize — размер аватара. Выбираете размер, котрый подойдет для вашего блога.

$exceptionEmail — укажите свой e-mail, чтобы топ не учитывал ваши комментарии.

2. Переходим в файл style.css и вставляем в самом конце следующий код:

.top-COMMENT {
height:100%;
margin-top:-10px;
}
.top-COMMENT TABLE {
min-height: 100%;
height:100%;
margin: 20px 0px 0px 5px;
}
.top-COMMENT TABLE td {
float: CENTER;
padding: 9px;
WIDTH: 70px;
}
.top-COMMENT .avatar-top img {
border: 3px solid #7FB2EC;
}
.top-COMMENT .avatar-COMMENT {
font-SIZE: 11px;
margin: 0;
}

Сохраняем изменения.

3. Если вы не используете виджеты в сайдбаре, то просто вставляете туда код:

<?php sp_top_commentator(); ?>

Если же вы, как и я, используете виджеты, то мы вставим этот код с помощью виджета. Но для того, чтобы это сделать нужно сначала добавить еще один код в файл functions.php

add_filter('widget_text','sp_widget_execute_php',100);
function sp_widget_execute_php($text) {
if(strpos($text,'<?') !== false) {
ob_start();
eval('?>'.$text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}

Его, как и предыдущий код, я вставила в самом конце перед тегом ?>.

Благодаря этому коду текстовый виджет  будет исполнять PHP-код. Итак переходим во Внешний вид →Виджеты. перетаскиваем виджет текст в сайдбар и вставляем в него код :

<?php sp_top_commentator(); ?>

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

Если боитесь изменять код, то можете установить плагин WP PHP Widget. Он также позволит вам вставлять в виджеты php код.

Выглядит он у меня так:

Надеюсь и у вас получится его установить. Не забывайте участвовать в конкурсе комментаторов!

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

С уважением, Евгения Куварина

Понравилось? Расскажи друзьям!


Обсуждение: 42 комментария
  1. Юлия:

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

    • Евгения:

      Ну так вперед! А лучше занять первое место в топе 🙂

    • Юлия:

      Жень, я хочу и 200, и первое место! Ты же знаешь, я способная! 😉

  2. Наталия Хоробрых:

    Ой, вот как дело кодов касается, так мен страшно становится. Я все по старинке, плагином…. ❗

  3. Василий Гербутов:

    Женя, привет! Спасибо Вам за код! Поставил себе всё работает … Желаю Вам удачи! ➡

    • Евгения:

      Всегда рада помочь! 🙂

  4. Валерия:

    Спасибо, Евгения, за код. Попытаюсь поставить у себя. Надо постепенно убирать некоторые плагины.

    • Евгения:

      обращайтесь, если что). Помогу, чем смогу))

    • Вера:

      Женя!
      У меня нее получилось.
      В файл functions.php код встал корректно.
      В файл style.css код не встал. Я его вставляла так же, как в файл functions.php в самом конце перед тегом ?>
      И все, сайт вылетел. Что я неправильно сделала?

    • Евгения Куварина:

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

    • Вера:

      Да, у меня первый раз именно так и вставилось, нумерация отдельно и выше вставилась, чем код.

  5. Ольга:

    Здравствуйте.
    Тоже установила у себя подобный код (нашла его, правда, на другом блоге).
    Но в разных шаблонах код действует по-разному — мне никак не удалось подровнять, выставить ТОП в середине сайдбара. А у Вас замечательно получилось.

    • Евгения:

      Ольга, теперь у вас все в порядке, как я посмотрела. Все смотрится просто отлично

  6. Андрей:

    Евгения, прочитав, сразу пошел делать у себя, но, к сожалению, не пошло. Еще один код, который надо добавить в файл functions.php, переносит меню в область над подвалом. 😮

    • Евгения:

      Андрей, думаю, многое зависит от шаблона. Возможно, вам лучше тогда использовать плагин

  7. Ксения:

    Спасибо большое, Евгения! Мне так страшно было лезть в коды, но ТОП комментаторов очень хотелось сделать. Лишний плагин ставить не хотелось. И я все же решилась. Ура!!! У меня получилось! 😆
    Теперь у меня и ссылки на статьи можно оставлять, и ТОП комментаторов есть!

  8. Наталья Самолюк:

    Незнаючи броду не стоит доверять коду. Нужно знать на каком html языке написан шаблон, как подключается тот или иной код в functions.php. а то как бы не пришлось горько плакать о потерянных данных. И когда что-то исправляете в шаблоне не ленитесь сделать бекап блога.

    • Евгения:

      Все верно, Наталья. Сохранить исходные данные надо прежде всего, чтобы без блога не остаться

    • Екатерина:

      Совершенно верно, Наталья, для того, чтобы «доверять коду», лучше всего обращаться к первоисточнику.

    • Евгения:

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

  9. Альберт:

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

  10. Галина:

    облазила блогов штук пять, везде способы похожие (даже очень) и только с вашего блога код подошел и стал ровненько =) спасибо, а то я уже хотела плагин ставить с горя =)

  11. Елена Юдина:

    А у меня вчера плагин заглючил — неправильно показывал количество комментариев и соответственно топ был неверный. Пришлось установить код (спасибо, пригодился), пересчитать комментарии вручную и все сошлось 🙂

  12. Наталья:

    А я честно говоря побаиваюсь в эти коды лезть, хотя много плагинов плохо сказываются на скорости сайта, а все они вроде бы нужны!
    Молодцы те, кто может поменять многие плагины на коды, просто молодцы! ❗

  13. Юрий:

    Установил себе такой блок без плагинов, мне он больше понравился, чем с плагином. Он более красивый и современный.

  14. Pasagir:

    Премного благодарен! А то я уже 3 плагина перепробовал. Так все значительно проще!!!

  15. Сергей:

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

    • Евгения Куварина:

      Сергей, мне оформление кодом тоже больше нравится 🙂

  16. Kozak:

    Код это хорошо. Главное — не забыть, что куда вставляешь.

  17. Елена:

    Евгения, здравствуйте. Приглашаю вас присоединиться к моему первому конкурсу комментаторов.

    Большое спасибо за статью, наконец то, благодаря ей, я смогла вывести топ комментаторов в сайдбар.

    Осталась одна проблема: как обнулить счетчик? Мне нужно чтобы учет шел с 15 числа. Подскажите, пожалуйста.

    • Евгения Куварина:

      Елена, настроить комментарии по определенной дате, можно с помощью плагина топ комментаторов, а с помощью кода не думаю, что это возможно, либо надо искать другой код.

    • Елена:

      Евгения, попробовала ввести дату в соответствующее поле, ничего не выходит. Что-то делаю не так 😥

    • Евгения Куварина:

      В топе с помощью кода дату указать нельзя, а в плагине вроде надо указывать следующим образом: 20140515 and 20140615, но сама не пробовала.

  18. Елена:

    Ура! Получилось! Евгения, большое спасибо 😛

  19. Аянбек:

    Евгения, я все точно так же сделал, как Вы написали в статье. Теперь вопрос, как сделать так, чтоб под Аватаркой в топе коментаторов отображалось только имя, без фамилии.
    В вашей статье говориться только про то, что можно сократить количестве символов. А ведь надо сделать так, чтобы автоматически отображалось только имя. И еще вопрос, как сделать так, чтобы имена не отображались в виде ссылок, а просто как текст?

    • Евгения Куварина:

      Аянбек, никак, так как это зависит от комментатора, как он указал свое имя в комментарии, так оно и будет отображаться. Убрать ссылки тоже нельзя, нужно менять код, но в этом случае нужно быть специалистом и разбираться в них. Ссылки можно убрать, если использовать плагин топ комментаторов, там есть возможность выбора

    • Аянбек:

      Понятно, я настроил этот топ, но все как то криво у меня вышло, сейчас попробую с плагином настроить топ комментаторов, если будет лучше выглядеть, то оставлю. Красота требует жертв)))

  20. Максим:

    Перепробовал несколько кодов для вывода комментариев без плагина, всегда были какие-то нюансы , ваш код подошёл без проблем, спасибо!!! 😉

  21. Дмитрий:

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

    • Евгения Куварина:

      Дмитрий, он самый последний в коде.

  22. Екатерина:

    А мне удобнее плагинами пользоваться, как-то я боюсь залазить в коды.

  23. NI4KA:

    Заказала на своем блоге блок с рейтингом комментаторов. Если мне его закончат и отладят до конца месяца, то в июле и у себя на блоге организую конкурс. Сама что-то на сайте редактировать, кроме статей и иллюстраций, даже не пытаюсь.

Поделитесь своим мнением

 

Заберите Ваш Подарок!
Блог на ordPress

Дайджест инвестора

Об инвестициях и заработке в Интернете

email рассылки Конфиденциальность гарантирована
email рассылки
Подпишись на мой канал!
Подпишись на канал
Душевные подарки на любой праздник! Заказывайте!
Давайте дружить!
Принимаем Z-Payment
© 2016 Денежный бриз