Сегодня я расскажу Вам, как установить виджет «Топ комментаторов» для WordPress-блога без плагина.
Решив поставить себе этот виджет, я пошла, естественно, в поисковую систему Google. Получила целый ворох ссылок, начала кликать с первой.
Вставив код, который там рекомендовался, туда, куда рекомендовали, я получила такой результат, что сайт мой перестал работать. Скопировав этот код в Notepad++, я увидела, что половина его закрашена цветом комментариев, то есть, он – нерабочий. Сравнила то, что скопировала, с тем, что имелось на сайте, убедилась, что в этом ошибок нет. Удалила вставленный код, сайт восстановился.
Я вздохнула с облегчением и пошла дальше. Во второй ссылке код встал, как надо, и виджет заработал. Но вставал он либо в начало сайдбара, либо в конец, и изменить это не представлялось возможным. Также не было понятно, как вставить к этому виджету заголовок (были вопросы в комментариях, как сделать заголовок на русском языке, а у меня его не было вообще). Автор блога на вопросы не отвечал (кроме как на комментарий «спасибо за статью»), поэтому я снова вернулась в поиск.
Третьей ссылкой было видео, мне не захотелось его смотреть, и я кликнула ни четвертую. С этой ссылкой мне повезло больше, поэтому я расскажу подробно, что и куда я вставляла. Впрочем, если Вы захотите все делать по первоисточнику, даю ссылку на эту статью. Мне понравилась статья, понравилось, как автор моментально реагировал на вопросы, корректировал код под какие-то запросы комментаторов. То есть, сразу видно, что автор в этом специалист.
А я, как всегда, подробно описываю, как устанавливала виджет я сама.
Первое, что надо сделать, это зайти в админ панель Вашего блога, в меню: Настройки → Обсуждения → Аватары и проверить, отмечена ли точкой позиция «Показывать аватары». Если отмечена – отлично, если нет – отметьте.
Второе: редактируем файлы темы.
Редактировать будем файлы functions.php и style.css, поэтому рекомендую сначала сделать их эталонную копию (как это делать, я рассказывала в статье «Как установить логотип»).
Теперь делаем копию рабочую, в которую будем вставлять необходимый код.
Код, который Вы будете копировать из моей статьи, обязательно сначала вставьте в Notepad++ и проверьте его на правильность копирования. И еще: в конце скопированного фрагмента будет добавлена ссылка на эту статью вида :
Read more: /vidzhet-top-kommentatorov-dlya-wordpress-bloga-bez-plagina.html…
Эту строчку из кода перед вставкой в файл сайта обязательно надо удалить.
В файл functions.php либо в начале, после открывающего тега <?php, либо в конце, перед закрывающим тегом ?> (я поставила в самом конце файла перед последним ?>) вставляем следующий код:
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 |
// комментаторы без плагинов function top_commentator(){ global $wpdb; $length = 0; // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается $month = true; // true - за текущий месяц, false - за все время $comment = true; // показывать количество комментариев $nofollow = true; // ссылки nofollow $count = 9; // количество комментаторов $col = 3; // количество колонок $avatarSize = 60; // размер аватара $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\.\-_][email protected][\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 ($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; } // комментаторы без плагинов |
Поясню начальные данные:
1 2 3 4 5 6 7 8 |
$length = 0; // Максимальная длина имени в символах, если стоит 0, то имя не обрезается; $month = false; // Показывается топ за: true - текущий месяц, false - все время; $comment = true; // Показывать количество комментариев, соответственно, если false, то количество не показывается; $nofollow = true; // Ссылки nofollow. Для dofollow-ссылок ставьте false; $count = 9; // Количество комментаторов; $col = 3; // Количество колонок в виджете; $avatarSize = 60; // размер аватара; $exceptionEmail = '[email protected]'; // емэйл-исключения, например, автора блога (согласитесь, нелепо, когда в топе находится автор блога). Можно задать несколько адресов через запятую. |
Далее, в самый конец файла style.css вставляем следующий код. А потом уже Вы можете редактировать его под свой дизайн (если умеете обращаться с кодами css):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* Вторая часть кода, вставляется в style.css: */ .top-comment { height:100%; } .top-comment table { min-height:100%; height:100%; } .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 #aaa; margin:0 0 3px 0; } .top-comment .avatar-comment { font-size:12px; } |
Теперь создаем новый виджет Text, ставим его в то место, где хотим видеть Топ комментаторов, и вставляем в него эту функцию:
1 |
<?php top_commentator(); ?> |
Наслаждаемся результатом.
Впрочем, результата может и не быть. Вполне возможно, что вместо ожидаемого виджета Вы увидите вставленный код. Ничего страшного. Снова идем в файл functions.php (уже измененный) и добавляем третью часть кода (опять же, в самом конце, до тега ?>):
1 2 3 4 5 6 7 8 9 10 11 12 |
//Третья часть кода, вставляется в 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; } |
Вот теперь все должно получиться «на ура!». Если опять что-то не получилось, проверяйте все пошагово. Код рабочий, у меня на блоге все работает, как Вы можете видеть сами.
Нравится ли Вам Ваш виджет «Топ комментаторов» без плагина для WordPress-блога? Не забывайте писать комментарии, чтобы попасть в топ. Через некоторое время я сделаю этот виджет dofollow, и ссылки на Ваш ресурс будут индексироваться.
Комментарии
Спасибо за положительную оценку моей работы =) Всегда приятно, когда ценят проделанную работу =) Буду продолжать писать пригодный код и сопровождать его =)
PS: Мне понравилось оформление аватарок в ТОПе, в кружочках очень оригинально =D
PSS: У меня есть еще наработки для ТОПа, чтобы проводить конкурс комментаторов, если автор не против, то я ссылочку кину на http: // paperplane.su/top-commentators-winners/ (пробелы в адресе убрать)
PSSS: C праздником ^^)
Да,виджет понравился,особенно оформление. Обязательно воспользуюсь кодом. Спасибо Вам и автору кода.
Оформление доработанное, об этом пост впереди
Здравствуйте, Николай! Статья по поводу оформления виджета “Лучшие комментаторы”: /kak-izmenit-razmer-i-formu-gravatara.html
Спасибо за интересную статью! Попробую установить на блоге.
Установите, конечно. Если будут сложности, пишите.
Успехов!
Настройки → Обсуждения → Аватары и проверить, отмечена ли точкой позиция «Показывать аватары». Если отмечена – отлично, если нет – отметьте. этого в вордпресс нет
Возможно, в некоторых темах это включено по умолчанию. А возможно, Вы просто не прокрутили страницу до этого пункта. Такое тоже бывает
мда… Беда у меня случилась.. На веб-сайте произошла ошибка при получении http: // inna-ligra.ru/wp-admin/theme-editor.php. Веб-сайт может быть закрыт на обслуживание или настроен неправильно.
Предлагают обновить позже. Хотя все прописала из эталонной папки обратно
Инна, этот комментарий попал на модерацию из-за ссылки, а я это не сразу увидела, поэтому откомментировала второй. Вероятнее всего, Вы где-то ошиблись, когда вставляли код. Иногда бывает, что даже после удаления этого кода (или загрузки эталонного файла) проблема не снимается. У меня самой такое было. Почему так, не знаю, да это и неважно в данный момент.
Решение предлагаю такое: сделать откат сайта на предыдущую дату, когда сайт еще работал. Если сами не умеете, напишите письмо в поддержку хостинга и попросите их помочь. После этого сайт заработает однозначно.
Если еще рискнете вставлять этот виджет, будьте предельно внимательны.
До отката можно еще раз проверить (через файловый менеджер хостинга) те файлы, в которые вносились изменения (файл css обычно глюков не вызывает, могут просто не работать стили оформления; значит, проверьте файл functions.php): точно ли Вы вернули эталонный файл.
Понятно, бывает.
Написала на хостинг, жду ответа.
Спасибо за советы, попробую устранить самостоятельно, а то хостинг долго не отвечает.
О! Еще лучше.
Доступ к веб-странице был запрещен
Возможно, сервер, на котором размещена данная веб-страница, перегружен или на нем произошла ошибка. Чтобы не допустить перегрузки и ухудшения ситуации, Интернет временно заблокировал запросы к серверу.
Лучше, чем что?
Такое впечатление, что комментарий написан в раздражении: лишь бы его на кого-то вылить!.. Если хотите получить помощь, то описывайте проблему подробнее, иначе помочь невозможно.
Какой сервер? Ваш? Это бывает, на сервере же не только Ваш ресурс расположен. И серверы иногда тоже дают сбой или подвергаются атакам.
Это случилось после ввода изменений, которые описаны в статье? Совпадение возможно? А Ваша ошибка?
Не в раздражении, а в расстройстве.
Произошла эта проблема как только я вставила первый код (в functions.php) вниз и нажала кнопку сохранить. После возникновения проблемы пробовала вернуться и вставить прежний код, но ошибка осталась.
Прошло несколько часов, на сайт по прежнему не зайти. Сейчас попробую на хостинг написать, бекап делать.
Инна, Вы вставили этот код перед последним тегом “? >”. Это абсолютно точно? Если так, то, возможно код скопировался не полностью или, наоборот, что-то лишнее попало. Чтобы это проконтролировать, лучше всего код вставить сначала в текстовый редактор (типа Notepad++), там его посмотреть, а потом уже вставлять в файл.
Если все правильно делали, то ничего не должно было случиться. Пишите, как у Вас продвигаются дела. Вы сами умеете откат делать? На Timeweb это очень просто, а как на Вашем?
Да, абсолютно точно. Единственное, я сделала это в другой строке, выше.
Сама откат делать не умею пока, жду пока хостинг откатит. Пока не сделали, подтвердила свое желание, жду результата.
Инна, у Вас прекрасный сайт! Успехов Вам и счастья Вам и Вашим детям!
Ура!!! Все в порядке
Мама дома в прямом и переносном смысле :)))
Поздравляю, Инна! Все хорошо, что хорошо кончается
Только мне очень интересно, что же все-таки случилось, главное – почему?
Надеюсь, этот неприятный случай не убил в Вас интерес к экспериментам?
Спасибо
Вдруг опять откат делать придется 
Нет, интерес жив, надо только выждать немного
Здравствуйте, Нина!
Долго я думала оставлять комментарий к этой статье или нет, и все же решила написать.
Правка кодов – один из сложнейших моментов, и очень важно, чтобы эти коды были правильными.
Если с кодами работает человек, который уже ранее этим занимался, то он отсеивает ненужное и применяет только правильную часть кода. Однако, если с кодом работает новичок, он копирует все, что ему рекомендуют и тут… Упс, ошибка.
Хорошо, если додумался сохранить себе файлы function.php и style.css для их дальнейшего восстановления. А если нет, то, как итог, переписка с поддержкой хостинга, потерянное время, пока они восстановят файл.
Представленная статья очень интересная, НО… В ней Вы выделяете коды для вставки красным цаетом, и в каждом из кодов в начале есть лишние строки:
код 1: // комментаторы без плагинов
код 2: /* Вторая часть кода, вставляется в style.css: */
код 3: //Третья часть кода, вставляется в functions.php после первой:
К тому же при копировании кода с Вашего блога важно вставить его сначала куда-то к себе, удалить ссылку на вашу статью:
Read more: /vidzhet-top-kommentatorov-dlya-wordpress-bloga-bez-plagina.html#ixzz2bq6G0lUs
и лишь после этого уже вставлять код в файл блога, опять таки, чтобы не поломать код, чтобы не произошло ошибки.
Хорошо, что Вы дали ссылку на первоисточник… Кстати, в начале первого кода там стоит не function top_commentator(){ , а function sp_top_commentator(){ (Остальную часть кода я не стала перепроверять, в итоге так и ушла на блог автора, чтобы все сделать, как говорится, от истоков).
Спасибо Вам за статью. надеюсь, что Вы не в обиде за то, что я поделилась информацией о возможных ошибках. Может, кому-то и полезно будет….
С уважением.
Здравствуйте, Катя! Во-первых, спасибо за такой развернутый комментарий.
Во-вторых, отвечаю по пунктам:
1. Насчет “Хорошо, если додумался сохранить себе файлы function.php и style.css для их дальнейшего восстановления.” – Я постоянно пишу об этом: нужно иметь эталонную копию тех файлов, которые меняете. А работать уже с другой копией – рабочей. Потому что при редактировании файлов темы бывает всякое, и даже вставив безупречный код, можно получить неработающий сайт.
2. “Вы выделяете коды для вставки красным цветом…” – не вижу в этом ничего криминального.
3. “в каждом из кодов в начале есть лишние строки:
код 1: // комментаторы без плагинов
код 2: /* Вторая часть кода, вставляется в style.css: */
код 3: //Третья часть кода, вставляется в functions.php после первой:” –
Это комментарии, от них никакого вреда нет. Кстати, первый из них у автора тоже, кажется, был.
4. “К тому же при копировании кода с Вашего блога важно вставить его сначала куда-то к себе, удалить ссылку на вашу статью:” – с этим согласна. Код появился, как результат работы одного из плагинов, который я поставила недавно. Разберусь, какой именно добавляет этот код, и либо удалю его, либо добавлю пояснение в статью.
5. “Кстати, в начале первого кода там стоит не function top_commentator(){ , а function sp_top_commentator()” – Да, действительно, не считала нужным копировать название функции с точностью до знака. Функция пользовательская, её можно обозвать как угодно, главное, чтобы и вызывалась она с тем же именем. А иначе виджет просто не стал бы показываться. Но он работает, как видите.
Что касается “не считала нужным копировать название функции с точностью до знака” – как раз таки не работает… пока я не вышла на блог-первоисточник, мучилась с Вашим кодом раз 5…
С уважением.
Но у меня-то работает! Я все делала так, как описала.
Впрочем, это спор бесполезный. Вы высказали своё мнение, я Вам благодарна за него, и нисколько не в обиде за критику. Наоборот, критика помогает выявить слабые места и поправить их.
Так что, спасибо еще раз и жду Вас на своем блоге снова.
C удовольствием, слежу за обновлениями Вашего блога!
Ни в коей мере и не собиралась с Вами спорить, извините, если обидела.
Скорее всего это особенность Вашей темы, а работать должно у всех
Работать должно у всех, с этим я согласна. Но работает не всегда, к сожалению, и зависит это от множества причин
Спасибо, Нина! Замечательная статья и очень нужная. Намного лучше сделать что-то для блога без использования плагина. Я немного запутался, когда искал раздел Настройки в админке. Нашел не Настройки, а Параметры. Может быть в старых версиях WordPress это называется настройки?
Андрей, пропустила Ваш комментарий, извините.
Я работала на разных сайтах и везде названия разные: где-то настройки, где-то параметры, точно так же, как и другие разделы админ панели называются по-разному. Возможно, это зависит от темы, а возможно от сборки вордпресса.
Пришлось восстанавливать сайт, хорошо, что сделала резервную копию
Значит, где-то ошиблись. Надо все делать предельно внимательно
Нина, а без разницы на какой версии Вордпресс проводить этот эксперимент ?
Оч-чень хочется такую штуку, но страааашно…
Мила, а что, у Вас совсем древняя версия вордпресса? Думаю, что нет, поэтому без разницы.
По поводу страшно. Риск есть всегда. Поэтому обязательно нужно делать бэкапы перед изменениями (причем бэкапы и файлов сайта и базы данных). Обязательно иметь эталонные копии файлов, которые меняете. И обязательно делать всё очень внимательно.
Если даже пойдет что-то не так, то на каждом хостинге (я надеюсь, что на каждом) есть возможность сделать откат сайта на предыдущую дату. То есть, вариантов восстановить сайт по крайней мере два, а ошибиться, если будете аккуратны, невозможно.
Мила, интересный феномен: получила на почту, что пришел ответ на мой комментарий, а самого комментария на сайте нет. Куда-то он улетучился. Но я его здесь повторю, чтобы было понятно, на что я отвечаю.
Вот Ваш комментарий:
“Ну, не знаю, очень или нет -на одном 2,9 на другом 3.1…. Поэтому многие хорошие фишки (плагины я имею ввиду) уже с ними не контачат…
А Ваш сайт мне понравился очень- много таких фенечек, которые вовсе пока нигде не встречала. Вот хотя бы такая интересная форма ответа на комментарий…”
1. Я поняла, что версии вордпресса у Вас очень старые. А почему не обновляете? Это даже для безопасности сайта плохо.
2. Не совсем поняла, что именно Вам понравилось в форме ответа на комментарии. Если разветвление, то это настраивается в админке (хотя, возможно, в таких старых версиях вордпресса древовидных комментариев не было предусмотрено). И еще, возможно, что тема их не поддерживает, встречала я такие темы.
Здравствуйте,Нина ! Я уже привыкла, что с интернетом у меня происходят всякие истории. порой веселые,порой грустные.
Не обновляюсь с версиями опять же потому,что страшно.
Дело в том, что по состоянию здоровья меня не было в сети -ни в Клубе, ни на блогах -год с лишним . А за это время версии на Вордпрессе выросли до 3.6… Вот я и боюсь, что слишком будет большая разница и я не смогу разобраться. Нет, в конечном итоге разберусь, безусловно, но на это потребуется время, с которым у меня большая напряженка.
При всем его дифиците очень много уходит на Клуб компьютеризированных пенсионеров, который я создала самостоятельно и не хотелось бы бросать его на произвол …
А с комментариями – мне понравилось и я раньше нигде не встречала эту фишку с активной ссылкой на пост комментирующего.
Это конечно, совсем не по-коммерчески, но зато справедливо. Я то и без ссылки комментарий оставила бы, но со ссылкой приятно вдвойне
А относительно версий – переписываюсь тут с одним юношей – смотрела его блог- понравилось-толковый паренек- обещал помочь за символическую плату.
Согласна с многими комментаторами, сайт после ваших кодов слетает, несколько раз пришлось в панель на хостинге лазить и менять убирать коды. Уже делаю с кодом с других сайтов и все равно ничего, только надпись а комментаторы не появляются
Елена, во-первых, комментаторов, у которых что-то не получилось, не много, а только двое, по-моему, у остальных все нормально работает. Значит, одно из двух: либо Вы где-то ошибаетесь, либо Ваша тема капризничает (и такое бывает, к сожалению). В первом случае может помочь Ваша внимательность, во втором – не поможет ничего, кроме смены темы.
Попробуйте сделать по первоисточнику, я же дала ссылку.
Да у кого не получилось – их двое человек, но все равно для человека у которого летит сайт после данных кодов и который не может сам его исправить и обращается в службу поддержки – это головная боль. Делала и вставляла коды правильно, не только по вашим кодам, но и с других сайтов (они немного другие, но смысл тотже), также смотрела видео, все правильно! НО увы не получилось. Вы правы наверно это проблема в моей теме, но ее менять из-за этого не буду, больно она красивая и подходит под для моего сайта. В итоге пришлось применить плагин Top Commenters Gravatar, конечно не так красиво как с кодом, но куда деваться, другого решения я пока не нашла! Вот что получилось: http://myblanes.ru/ Спасибо!
Что же делать, Елена! Не всегда все получается так, как хотелось. Посмотрела у Вас на сайте, все нормально получилось с плагином. Тема у Вас действительно красивая.
Попробовала – в итоге сайт не работает .
пошла писать в в техподдержку
Что-то пошла полоса неудач с этим виджетом. То ли темы у многих капризные, то ли что другое. Главное, что за сам код я спокойна: у меня же работает.
возможно дело в теме, тем более у меня премиум. Сайт восстановили, не больше я рисковать не буду))
ПРидется решать вопрос с помощью плагина.А жаль.
Ну если общее количество плагинов невелико, то не страшно
Нина, прочитала с интересом. У меня тоже стоит Топ комментаторов, вот только на первом месте админ, то есть я сама. Как исправить эту ситуацию, пока не разобралась.
Если у Вас этот виджет сделан с помощью плагина, возможно, там в настройках есть возможность убрать админа (логично предположить, что должна быть такая настройка). Если же кодом, то у меня написано, что нужно сделать, чтобы убрать админа из топа.
Топ комментаторов мне очень нравится, но моя тема такая капризная и виджеты очень узкие. Боюсь не впишется эта красота, но очень бы хотелось!
Галина, там можно делать разное количество колонок, так что впишется. Вот тема капризная – это серьёзнее!
А что писать в виджет??
Извините, плагин, вставляющий коды в статью, начал с чем-то конфликтовать, и я его отключила. А при этом перестал показываться этот код. Сейчас подключила снова, конфликт по-прежнему есть, и надо его решать, либо искать другой плагин для вставки.
Многие заморачиваются, что плагины нагружают блог, дак скрипты также нагружают, это также как плагины! А чем с кодом танцы с бубном устраивать-дак проще плагин поставить, который сделан профессионалами!
Вы правы, весь интернет заполнен страшилками насчет того, что плагины нагружают блог, поэтому лучше их заменять скриптами. Все повторяют эти страшилки друг за другом, я тоже не осталась в стороне. Каюсь!

Но, во-первых, далеко не все плагины нагружают блог, во-вторых, некоторые скрипты их нагружают гораздо больше. А в-третьих, мы берем какие-то ужасные шаблоны (с точки зрения оптимизации кода), не умеем их оптимизировать, а потом сваливаем все на несчастные 10-15 плагинов, которые стоят у нас на блогах (ну, у кого-то побольше, но не настолько, чтобы из-за этого паниковать).
Так что в следующий раз я напишу о плагине, который выводит виджет с топом комментаторов
Почитала не только статью, но и комментарии. Смотрю, что у многих сайты “слетали” в результате экспериментов. Я отношусь к тем людям, для которых любое “телодвижение” в техническом плане на сайте грозит катастрофой
, поэтому эксперимент ставить не буду. И вообще хотела спросить: какой толк от этого виджета топа комментаторов кроме красоты? 
Лена, этот виджет у меня с новой темой тоже работать не стал, так что не надо экспериментов. Поставила плагином. Насчет толка: во-первых, этот виджет нужен, если проводишь конкурс комментаторов, во-вторых, многим приятно себя видеть в “передовиках”
Спасибо, совершенно ничего сложного как оказалось нет, установила виджет к себе за пару минут, всё работает прекрасно!
Елена, Вы оказались в числе счастливчиков, у кого этот виджет встал как надо. Поздравляю! А я как удалила его после смены темы, так больше и не ставила, хотя тем сменила уже не одну за это время.