Лайфлаки для комментариев WORDPRESS. Вторая часть

В этой статье мы продолжаем публиковать советы для комментариев WordPress.

Как отобразить общее число комментариев и постов в одном месте

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

<?php
$count_posts = wp_count_posts();
$posts = $count_posts->publish;
$count_comments = get_comment_count();
$comments  = $count_comments[‘approved’];
$html = ‘<p>Всего в блоге <strong class=»white»>’ . $posts . ‘</strong> записей.<br />Читатели оставили <strong class=»white»>’ . $comments . ‘</strong> комментариев.<br />В среднем по <strong class=»white»>’ . round($comments/$posts) . ‘</strong>
echo $html;

?>

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

Каким образом вывести произвольное количество комментариев

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

Чтобы выйти из ситуации, следует вставить код туда, откуда требуется вывести информацию. Безусловно, не забывайте выставить необходимое число после LIMIT:

<?php
$pre_HTML =«»;
$post_HTML =«»;
global $wpdb;
$sql = «SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = ‘1’ AND comment_type = » AND post_password = » ORDER BY comment

$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= «\n<ul>»;
foreach ($comments as $comment) {
$output .= «\n<li>».strip_tags($comment->comment_author) .«: « . «<a href=« . get_permalink($comment->ID).«#comment-« . $comment->comment_ID . « title=on «.$comment->post_title . « . strip_tags($comment->com_excerpt).«</a></li>»;
}
$output .= «\n</ul>»;
$output .= $post_HTML;
echo $output;
?>

Здесь мы применили переменную $wpdb в паре с функцией get_results(). Код, который был приведен выше, будет демонстрировать авторское имя и начальные тридцать знаков комментария. Эти символы играют роль ссылки непосредственно на сам комментарий. Если есть желание, можно вывести аватары и другую информацию.

Как защититься от спама

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

Чтобы это сделать, откройте файл functions.php и добавьте следующую функцию:

function check_referrer() {
if (!isset($_SERVER[‘HTTP_REFERER’]) || $_SERVER[‘HTTP_REFERER’] == “”) {
wp_die
}
}
add_action(‘check_comment_flood’, ‘check_referrer’);

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

Вывод любого числа самых популярных постов за конкретное время

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

Для этого следует использовать следующий код:

<ul>
<?php
$result = $wpdb->get_results(«SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN date’ AND date’ ORDER BY comment_
foreach ($result as $topten) {
$postid = $topten->ID;
$title = $topten->post_title;
$commentcount = $topten->comment_count;
if ($commentcount != 0) {
?>
<li><a href=»<?php echo get_permalink($postid); ?>«><?php echo $title ?></a></li>
<?php }
}
?>
</ul>

Не забудьте периодически менять даты, которые отвечают за время выборки данных. Там, где написано «BETWEEN date AND date», необходимо указывать нужную дату в формате «год – месяц – число».

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

//добавляем само поле //заполняем его текущей меткой времени через Javascript

Метки