Выводим количество комментариев рядом с ником комментатора

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

Итак, открываем файл functions.php и добавляем в него вот эту функцию, которая будет подсчитывать общее количество комментов:

function commentCount() {

global $wpdb;

$count = $wpdb->get_var('SELECT COUNT(comment_ID) FROM ' . $wpdb->comments. ' WHERE comment_author_email = "' . get_comment_author_email() . '"');

echo $count . ' comments';

}

Как видите, во внимание берётся  email, который указал комментатор в соответственное поле.

После этого нужно найти код, который отвечает за вывод комментов (это может быть comments.php или же functions.php, как было в моем случае). Вставляем в нужное место вывод количества комментов, функцию для которого мы создали минуту назад.

<?php commentCount(); ?> 

Вот что у меня получилось:

Внимание!

В комментариях один добрый человек (ник Pepper) посоветовал изменить этот код, так как он может «положить» блог.

Цитирую:

Хотите положить этот сайт? Пишите побольше комментов! :)

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

Оптимизируйте!
1. Выбираем все уникальные email адреса комментаторов данного поста и сохраняем а массив.
2. Для каждого адреса в массиве считаем кол-во коментов.
3. Для каждого комента вытягиваем email, потом проверяем есть ли он в массиве. Если есть, выводим число.

Можно оптимизивать еще дальше и сделать все в одном SQL запросе! GROUP BY вам в помощь! ;)

Я заметил, что у меня блог в последнее время начал тупить (как раз в этот период у меня на блоге было очень много комментариев). Итак, вот пост Pepper’a, в котором он делится с нами кодом, который не так будет нагружать блог.

P.S. Узнайте как оказывается легко сделать блог. Я тоже когда то думал, что это сложно

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

Sidash

Понравилась статья? Поделиться с друзьями:
Комментарии: 41
  1. SEORider

    Есть еще плагин для этого

  2. sidash (автор)

    ну зачем лишними плагинами загружать блог?

  3. SEORider

    Даже обычный счетчик может нагружать блог сильнее чем какой либо плагин.

  4. SEOstager

    спасибо! удобно и , гланое для меня, без спользования плагинов

  5. sidash (автор)

    такой счетчик не сильно нагрузит блог) поверь

  6. ToRRino

    Спасибо, ИмХО лучше пытаться обойтись без плагинов)

  7. Жерка Лукич

    Всё, что обращается к БД или ищет, а потом считает, нагружает сервер.

  8. sidash (автор)

    я не отрицаю того, что сервер нагружается

  9. Satomaker

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

  10. Руслан

    неплохая реализация)

  11. __LEnIN__

    А толку от этого?)) По моему почти бесполезная весчь))

  12. Vadyxa

    Спасибо большое!
    Себе поставлю обязательно такой счетчик =)

  13. Бабай

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

  14. haserk

    Кул, на дискусе сработает как-то?

  15. sidash (автор)

    Бабай, ссылки у меня неиндексируемые, только трафик передают немного
    haserk, никак наверное=)

  16. Andrew

    У меня на блоге с этим заданием справляется плагин открывающий ссылки в комментах для индексации

    А так очень удобно смотреть постоянный гость это или случайно забревший бродяга

  17. Бабай

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

  18. Онлайн Хулиган

    Я юзаю плагин NoFollow Free, который не только позволяет выводить такие цифры, но и стимулирует комментаторов. Хоть и не особо…

  19. Delet_ER

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

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

    именно поэтому все стремятся к уменьшению количества загруженных плагинов.

  20. Delet_ER

    Блин, ну надеюсь все поняли, что я к сеорайдера обращаюсь)

  21. Рома

    о полезная, штука будет

  22. CoolSayana

    Ага… ну спасибо хоть посмешили!
    Прочитала эту статью в «пол глаза», смотрю на свой ник, а на нем CoolSayana (37) Думаю: Ну ничего себе время бежит! Вчера мне было 30, а сегодня уже 37(!) :)))))
    *Интересная добавочка, спасибо Дима! Я буду за тобой «подглядывать», так как ставила плагины по твоей статье.
    *Тебе Каркуша привет передавала ;) Все нормально?

  23. MikeKovalev

    Интересно почему не особо стимулирует, пузомерки вроде не нулевые..)

  24. sidash (автор)

    да:)
    ничего страшного — то с переездом блога ссылки у тебя немного изменились;)

  25. pavka

    даешь 500 коммент

  26. Дмитрий

    )))))))))) я тоже посмеялся

  27. Дмитрий

    спасибо, отличная функция, считаю что очень даже нужно!

    хотел сделать так:

    ‘Уже ‘ echo $count . ‘ комментариев’;

    выдает — ошибка парсинга….

  28. sidash (автор)

    echo ‘уже’. $count . ‘комментариев’;

    вот так нужно было сделать)

  29. Дмитрий

    спасиб, зачет )

  30. Онлайн Хулиган

    Ну кто ж знает…

  31. Pepper

    Хотите положить этот сайт? Пишите побольше комментов! :)

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

    Оптимизируйте!
    1. Выбираем все уникальные email адреса комментаторов данного поста и сохраняем а массив.
    2. Для каждого адреса в массиве считаем кол-во коментов.
    3. Для каждого комента вытягиваем email, потом проверяем есть ли он в массиве. Если есть, выводим число.

    Можно оптимизивать еще дальше и сделать все в одном SQL запросе! GROUP BY вам в помощь! ;)

  32. Дмитрий

    ну вот, а так замечательно выглядело (((

  33. Дмитрий

    допилить бы как товарищ Pepper сказал, было бы супер, еще немного функционала натянуть, у меня идеи даже есть ))))) и популярный плагин готов ;-)

  34. Pepper

    Ок, написал функцию. Тыкайте в мой блог. Там всего один SQL запрос, как я и говорил.

  35. Дмитрий

    вот так читательская масса и набирается ))))))))

  36. sidash (автор)

    я буду вам очень благодарен, если вы поможете мне с этим)

  37. wertock

    Спасибо, а я как раз мучил голову.

  38. Alhana

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

  39. Otshelnik-fm

    @Pepper: По ссылке указанной выше, не нашел решения. Попросту не работает. не выводит ничего. вордпресс 3.2.1

    Ну а почему бы автору статьи этот код не исправить? или вы так с чистой совестью — «я вас предупреждал что он много запросов к бд делает…». Все-таки если вы знаете о проблеме — почему не исправите?

  40. sidash (автор)

    @Otshelnik-fm: у меня тот вариант работал. может он с новой версией вордпресса не работает..хз

  41. Otshelnik-fm

    @sidash: причину нашел. там в коде используются префиксы бд. кто изначально wp_ префикс сменил — не работает. В коде сделал 2 замены на свой префикс и заработало. Автору той статьи написал о проблеме и решениии

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: