Как создать простой плагин для автоматического отключения комментариев в WordPress

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

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

Существует множество готовых плагинов для управления комментариями, таких как Disable Comments или WP Disable Comments. Однако создание собственного плагина дает несколько преимуществ:

  • Минимальное потребление ресурсов — плагин содержит только нужный функционал.
  • Полный контроль над поведением и возможностью расширения.
  • Отсутствие сторонних зависимостей и возможных конфликтов.
  • Возможность интеграции с другими вашими разработками.

Давайте рассмотрим, как сделать простой и понятный код, который решит задачу.

Основные шаги создания плагина

Для начала создадим папку для нашего плагина в директории wp-content/plugins, например expert-review-disable-comments. Внутри создадим файл expert-review-disable-comments.php с основным кодом плагина.

В начале файла добавим стандартный заголовок плагина:

<?php
/**
 * Plugin Name: Expert Review Disable Comments
 * Description: Автоматическое отключение комментариев на сайте WordPress.
 * Version: 1.0
 * Author: Expert Review
 */

Теперь добавим функционал.

Отключение комментариев и формы комментирования

Чтобы полностью отключить комментарии, нужно:

  • Отключить поддержку комментариев и откликов в типах записей.
  • Убрать форму комментариев с фронтенда.
  • Запретить сохранение новых комментариев.
  • Скрыть ссылки на RSS комментариев и меню управления комментариями в админке.

Для этого используем следующие хуки и функции.

function expert_review_disable_comments_post_types_support() {
    $post_types = get_post_types();
    foreach ($post_types as $post_type) {
        if (post_type_supports($post_type, 'comments')) {
            remove_post_type_support($post_type, 'comments');
            remove_post_type_support($post_type, 'trackbacks');
        }
    }
}
add_action('admin_init', 'expert_review_disable_comments_post_types_support');

// Запрет на открытие страницы комментариев в админке
function expert_review_disable_comments_admin_menu() {
    remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'expert_review_disable_comments_admin_menu');

// Отключаем поддержку комментариев для REST API
function expert_review_disable_comments_rest_support() {
    global $wp_post_types;
    foreach ($wp_post_types as $post_type) {
        if (isset($wp_post_types[$post_type]->show_in_rest)) {
            $wp_post_types[$post_type]->show_in_rest = false;
        }
    }
}
add_action('init', 'expert_review_disable_comments_rest_support');

// Запрет на сохранение новых комментариев
function expert_review_disable_comments_prevent_comments($open, $post_id) {
    return false;
}
add_filter('comments_open', 'expert_review_disable_comments_prevent_comments', 20, 2);
add_filter('pings_open', 'expert_review_disable_comments_prevent_comments', 20, 2);

// Убираем виджет комментариев из админки
function expert_review_disable_dashboard_widgets() {
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'expert_review_disable_dashboard_widgets');

// Редирект попыток попадания на страницу комментариев
function expert_review_disable_comments_redirect() {
    global $pagenow;
    if ($pagenow === 'edit-comments.php') {
        wp_redirect(admin_url());
        exit;
    }
}
add_action('admin_init', 'expert_review_disable_comments_redirect');

Дополнительные рекомендации и расширения

После внедрения базового функционала можно улучшить плагин:

  • Добавить страницу настроек, чтобы иметь возможность включать/отключать отключение комментариев.
  • Реализовать выбор типов записей для отключения через интерфейс.
  • Добавить очистку базы данных от старых комментариев с подтверждением.
  • Поддерживать мультисайтовую установку WordPress.

Для создания страницы настроек используйте API настроек WordPress с функциями add_options_page и register_setting. Это позволит сделать плагин более гибким и удобным в использовании.

Пример добавления страницы настроек

function expert_review_disable_comments_settings_menu() {
    add_options_page(
        'Настройки отключения комментариев',
        'Disable Comments',
        'manage_options',
        'expert-review-disable-comments',
        'expert_review_disable_comments_settings_page'
    );
}
add_action('admin_menu', 'expert_review_disable_comments_settings_menu');

function expert_review_disable_comments_settings_page() {
    if (!current_user_can('manage_options')) {
        return;
    }
    // Обработка сохранения настроек
    if (isset($_POST['submit'])) {
        // Безопасность
        check_admin_referer('expert_review_disable_comments_save', 'expert_review_disable_comments_nonce');
        $disable = isset($_POST['disable_comments']) ? 1 : 0;
        update_option('expert_review_disable_comments', $disable);
        echo '<div class="updated">Настройки сохранены.</div>';
    }
    $disable_comments = get_option('expert_review_disable_comments', 1);
    ?>
    <form method="post" action="">
        <h2>Настройки отключения комментариев</h2>
        <input type="checkbox" name="disable_comments" value="1" <?php checked(1, $disable_comments); ?> /> Отключить комментарии на сайте<br />
        <?php wp_nonce_field('expert_review_disable_comments_save', 'expert_review_disable_comments_nonce'); ?>
        <input type="submit" name="submit" value="Сохранить" class="button-primary" />
    </form>
    <?php
}

Заключение по созданию плагина Expert Review Disable Comments

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

Если вы хотите глубже интегрироваться с WordPress и создавать свои плагины, рекомендую изучать официальную документацию и практиковаться на простых задачах, как эта. Это даст вам уверенность и понимание, как работает платформа изнутри.

Автоматическое изменение стоимости товаров в WooCommerce при определённых условиях
26.04.2026
Как реализовать двойной вызов функций в WordPress
27.02.2026
Как исправить ошибку WooCommerce "Invalid security nonce" при оформлении заказа
07.05.2026
Как использовать WP_Query для сложных запросов в WordPress
02.02.2026
Как избежать ошибки 503 в WordPress: практическое руководство
19.03.2026