Рубрика: Комментарии

Как при подсчете комментариев не учитывать пинги?

Темы для WordPress для вывода числа комментариев используют в основном функции comments_popup_link() и comments_number(), которые по умолчанию считают все комментарии записи, включая пинги (обратные ссылки и уведомления). Если ваша тема не выводит пинги, то число комментариев может смущать - оно может быть больше реального числа комментариев. Исправить это просто, для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//в подсчете комментариев удаляем пинги start
function wph_comment_count($count) {
    global $id;
    $comments_by_type = &separate_comments(get_comments('post_id=' . $id));
    return count($comments_by_type['comment']);
}
add_filter('get_comments_number', 'wph_comment_count', 0);
//в подсчете комментариев удаляем пинги end

Как «упростить» форму добавления комментариев?

Упрощенная форма комментирования

С целью повышения количества комментариев можно "упростить" форму добавления комментариев, вырезав из нее все лишние детали, которые обычно смущают посетителей. По сути, после такого упрощения комментаторам нужно будет заполнить только одно единственное поле "Комментарий" без необходимости указывать свой email-адрес и свое имя (по умолчанию используется имя "Гость"). Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

Как вывести список последних комментаторов каждой записи?

Авторы последних комментариев к записи

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

<?php 
$args = array('number' => 5, 'post_id' => get_the_ID(), 'status' => 'approve');
$latest_comment = get_comments($args);
if ($latest_comment) {echo '<p>Комментарии от: ';}
if ($latest_comment) foreach($latest_comment as $comment) { ?>
<?php echo get_avatar($comment->comment_author_email, 24) . ' '; ?> 
<?php echo $comment->comment_author . ' '; ?>
<?php } ?>
<?php echo '</p>'; ?>

Недостаток у этого кода только один - он не учитывает того, что один комментатор может оставить несколько комментариев и, поэтому возможна ситуация, когда в списке один человек повторяется 5 раз. Это можно изменить с помощью такого кода:

Как скрыть комментарии на сайте от гостей?

Если по каким-то причинам вы хотите скрыть комментарии сайта от гостей (неавторизованных пользователей), то воспользуйтесь следующим кодом, вставленным в файл functions.php вашей темы:

//скрытие комментариев от гостей start
function wph_hide_comments_for_guests() {
    if (is_user_logged_in()) {return;}
    add_filter('comments_array',      '__return_empty_array');
    add_filter('get_comments_number', '__return_zero');
    add_filter('comments_open',       '__return_false');
}
add_action('init', 'wph_hide_comments_for_guests');
//скрытие комментариев от гостей end

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

Как разрешить тег img в комментариях?

WordPress не позволяет обычным посетителям (подписчикам, участникам и т.д.) оставлять нефильтрованный html-код в комментариях. Тег вставки картинок img тоже попадает под запрет, поэтому комментаторы вынуждены оставлять ссылку на картинку вместо ее вывода напрямую в тексте комментария. Тег img можно добавить в список разрешенных html-тегов, которые не попадают под фильтрацию. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//тег img в комментариях start 
global $allowedtags;  
$allowedtags_add = array ('img' => array ('src' => array(), 'alt' => array(), 
    'title' => array(), 'height' => array(), 'width' => array()) ); 
$allowedtags = array_merge ($allowedtags, $allowedtags_add);
//тег img в комментариях end

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

Как запретить слишком длинные урлы в поле «Сайт»?

Слишком длинный урл в поле "Сайт" в оставленном комментарии практически всегда означает, что это спамный комментарий. Потому что нормальные люди всегда оставляют ссылку на главную страницу своего сайта, а вот спам-боты раскручивают внутренние страницы своих сайтов, поэтому их ссылки всегда длинные. Можно не заморачиваться с проверкой таких комментариев, а сразу кидать их в папку спам. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//кидаем в спам коммент со слишком длинным урлом start
function wph_check_comment_url_len($approved, $data) {
    return (strlen($data['comment_author_url']) > 35) ? 'spam' : $approved;
}
add_filter('pre_comment_approved', 'wph_check_comment_url_len', 99, 2);
//кидаем в спам коммент со слишком длинным урлом end

Длина нормальной ссылки редко превышает 35-40 символов. Но вы можете увеличить это число в коде, чтобы разрешить более длинные урлы в поле "Сайт".

Как добавить свое поле в форму добавления комментария?

Комментарий с выводом поля Город

При необходимости в форму добавления комментариев на вашем сайте можно включить свои дополнительные поля вроде "Город" или "Twitter" (и любое другое). А затем эти поля можно вывести в самом комментарии (как на скриншоте). Для этого вам необходимо добавить в файл functions.php вашей темы следующий код: