Если у вас на сайте WordPress активно ведутся обсуждения, но старые публикации уже не актуальны для комментирования, имеет смысл отключить комментарии на них автоматически. Это поможет снизить спам, улучшить производительность сайта и упростить модерацию. В этой статье подробно разберём, как реализовать автоматическое отключение комментариев на постах старше заданного времени, используя код и полезные плагины.
Почему стоит отключать комментарии на старых постах
Со временем темы устаревают, и обсуждения на них теряют актуальность. Оставляя комментарии открытыми, вы рискуете получить спам или нецелевые сообщения, что негативно скажется на репутации сайта. Кроме того, большое количество комментариев влияет на скорость загрузки страниц и нагрузку на базу данных.
Автоматизация этого процесса поможет экономить время и поддерживать порядок на сайте без ручного вмешательства.
Реализация отключения комментариев на старых постах через код
В WordPress можно использовать хук pre_comment_open, чтобы программно запретить открытие комментариев для постов, которым больше заданного количества дней. Ниже приведён пример функции для файла functions.php вашей темы:
function wplog_disable_comments_on_old_posts($open, $post_id) {
$days_limit = 30; // количество дней, после которых комментарии закрываются
$post = get_post($post_id);
if (!$post) {
return $open;
}
$post_date = strtotime($post->post_date);
$current_date = current_time('timestamp');
if (($current_date - $post_date) > ($days_limit * DAY_IN_SECONDS)) {
return false; // закрываем комментарии
}
return $open;
}
add_filter('pre_comment_open', 'wplog_disable_comments_on_old_posts', 10, 2);
Эта функция проверяет дату публикации поста и если с момента публикации прошло больше 30 дней, то комментарии закрываются. Можно изменить значение $days_limit на любое другое по вашему усмотрению.
Дополнительные улучшения кода
Если вы хотите не только закрывать комментарии, но и убирать форму комментариев на старых постах, можно добавить следующий код в functions.php:
function wplog_remove_comment_form_on_old_posts($post) {
$days_limit = 30;
$post_date = strtotime($post->post_date);
$current_date = current_time('timestamp');
if (($current_date - $post_date) > ($days_limit * DAY_IN_SECONDS)) {
remove_action('comment_form', 'comment_form');
}
}
add_action('wp', function() {
if (is_single()) {
global $post;
wplog_remove_comment_form_on_old_posts($post);
}
});
Использование плагинов для автоматического отключения комментариев
Если вы не хотите погружаться в код, существуют плагины с нужным функционалом:
- Close Comments — простой плагин, который автоматически закрывает комментарии на постах старше заданного срока.
- Auto Close Comments — позволяет гибко настроить сроки закрытия комментариев для разных типов записей.
- Clearfy Pro — комплексный плагин для оптимизации и безопасности, включающий функцию автоматического закрытия комментариев на старых публикациях.
Все эти плагины просты в настройке: достаточно указать количество дней, после которых комментарии будут закрываться, и активировать соответствующую опцию.
Как проверить, что комментарии действительно закрываются
После внедрения кода или установки плагина, проверьте на нескольких старых постах, что комментарии недоступны. При открытии таких записей форма комментариев должна исчезать или быть недоступной для отправки.
Для теста можно временно изменить дату публикации поста на более старую через админку или в базе данных.
Преимущества автоматизации и советы по применению
Автоматическое закрытие комментариев помогает:
- Снизить количество спама на старых записях.
- Уменьшить нагрузку на базу данных и сервер.
- Поддерживать актуальность обсуждений.
- Упростить модерацию комментариев.
Рекомендуется настраивать срок закрытия с осторожностью, учитывая специфику вашего сайта и активность пользователей.
Интеграция с WPExpert Review для обратной связи
Если ваш сайт использует плагин WPExpert Review для отзывов, можно одновременно ограничить комментарии, но оставить форму для отзывов, чтобы сохранялась обратная связь.
Таким образом, вы делаете обсуждения более целевыми и актуальными, не теряя возможности получать полезные отзывы.