Реклама

Вид отображения участников на WordPress

Всем привет! Давно я не писал ни каких статей в связи с тем что были небольшие дела. Это ни как не связано со статьями которые вы приходите почитать =) Искал всё как улучшить блог в виде отображения и для удобства использования. Нашёл конечно но не так уж много как хотелось.

Когда я создавал  «Конкурс на топ комментариев» всё задумывался о том как опубликовать на общее обозрение лучших комментаторов. Каждому ведь хочется знать сколько ещё нужно чтобы обогнать соперника и получить приз. Участники завали вопросы «когда появится статистика», «как узнать у кого сколько комментариев» и тп.

Я по началу не знал что делать потому что не хотел устанавливать различные плагины. Как вам известно что большое установленных плагинов тормозят систему. Вот моё решение было принято и решил немного по гуглить.

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

function sp_top_commentator_winners(){
global $wpdb;
$length = 10;        // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается
$month = false;     // true - комментаторы за текущий месяц, false - за все время
$comment = true;    // Показывать количество комментариев? true - показывать, false - не показывать
$nofollow = true;   // Ссылки nofollow, true - да, false - нет
$count = 6;        // Количество отображаемых комментаторов
$col = 3;       // Количество колонок
$avatarSize = 70;   // Размер аватара в px
$exceptionEmail = '12345@gmail.com'; // исключить эти E-mail адреса из ТОПа
$showWinners = false;    // Показывать победителей? true - показывать, false - не показывать
$countWinners = 3;  // Количество победителей
$showDays = 3;      // Количество дней, которое показываются победители
$separator = '<hr style="display:block;">'; // разделитель ТОПа и победителей

$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('/([wd.-_]+@[wd.-_]+)(,? ?)/','"\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
);

$firstIteration = true; // отвечает за то чтобы было всего две итерации
do {
$output = "<div class='top-comment'><table width='100%'><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;

if ($showWinners and date('j') <= $showDays and $firstIteration) {
$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('/([wd.-_]+@[wd.-_]+)(,? ?)/','"\1"\2',$exceptionEmail).') AND
month(comment_date) = month(now() - interval 1 month)
GROUP BY
comment_author_email
ORDER BY
comments_count DESC
LIMIT '.$countWinners
);
echo $separator;
$firstIteration = false;
} else {
$showWinners = false;
}
} while($showWinners);
}

Данный код вставляйте в functions.php вашей активной темы в самый низ после закрывающего тега ?> . Для этого войдите в админке в внешний вид/ редактор.

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

Для того чтобы выводился блог с рейтингом в виджетах впишите следующий код:

<?php sp_top_commentator_winners(); ?>

Вот что должно получится:

Вид отображения участников на WordPress

На данном примере отображается всего 3 участника так как я так поставил в настройках. Вы можете вывести больше участников.

Кстати, если вы не хотите чтобы вы отображались в этом списке впишите свой емаил в данном коде

$exceptionEmail = '12345@gmail.com'; // исключить эти E-mail адреса из ТОПа

Всё мы установили данный рейтинг, поздравляю =) Если у вас отображается всё криво типа большие аватары или мало присутствует пользователей. Настройте код который вы вставили в функцион. Специально для этого создатель данного дополнения вписал подсказки.

+1
Пин
Рассказать друзьям
Поделится в ОК
Отправить

3 Комментарии

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

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*