Как создать собственный фильтровый плагин WordPress с примерами кода

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

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

Фильтры (hooks) — это специальные точки в коде WordPress, куда можно «подвесить» свою функцию, чтобы изменить данные перед их выводом или обработкой. Например, можно изменить заголовок записи, отфильтровать список категорий или модифицировать контент поста.

Создание собственного плагина с фильтрами имеет ряд преимуществ:

  • Изоляция вашего кода от темы и ядра;
  • Лёгкое управление и переносимость;
  • Возможность добавлять сложную логику фильтрации;
  • Удобство обновления и поддержки.

Далее рассмотрим, как создать базовый плагин с фильтрами и примеры полезных сценариев.

Создание базовой структуры плагина для фильтров

Для начала создадим папку плагина wpmark-filter-plugin в директории wp-content/plugins. В ней создадим файл wpmark-filter-plugin.php с базовым описанием:

<?php
/**
 * Plugin Name: WPMark Filter Plugin
 * Description: Пример плагина с пользовательскими фильтрами для WordPress
 * Version: 1.0
 * Author: WPMark
 */

// Защита от прямого вызова
if ( ! defined('ABSPATH') ) {
    exit;
}

Теперь можно добавить первый фильтр.

Пример 1: Фильтрация заголовков записей

Допустим, нужно добавить префикс к заголовкам всех записей. Используем фильтр the_title.

function wpmark_filter_the_title( $title ) {
    if ( is_singular('post') ) {
        $title = '🔹 ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'wpmark_filter_the_title' );

Этот код добавит «🔹» перед заголовком на страницах отдельных записей. Такой простой пример показывает, как изменять вывод.

Пример 2: Фильтрация контента для добавления пользовательского блока

Часто требуется добавить дополнительный HTML-блок в контент записи. Используем фильтр the_content:

function wpmark_filter_the_content( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        $custom_block = '<div class="wpmark-custom-block">Дополнительный блок контента</div>';
        $content .= $custom_block;
    }
    return $content;
}
add_filter( 'the_content', 'wpmark_filter_the_content' );

В результате под основным текстом записи появится дополнительный блок. Можно использовать CSS для стилизации.

Пример 3: Фильтрация пользовательских настроек через опции

Создадим фильтр, который изменяет значение опции перед использованием. Для примера возьмём опцию blogname — название сайта.

function wpmark_filter_blogname_option( $value ) {
    return $value . ' | WPMark';
}
add_filter( 'option_blogname', 'wpmark_filter_blogname_option' );

Теперь в заголовках сайта к названию будет добавляться суффикс «| WPMark» без правки настроек в админке.

Продвинутые техники: динамическое добавление фильтров и параметры

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

function wpmark_filter_comment_content( $comment_text ) {
    $blacklist = array('spamword1', 'spamword2');
    foreach ( $blacklist as $word ) {
        if ( stripos( $comment_text, $word ) !== false ) {
            return '';
        }
    }
    return $comment_text;
}
add_filter( 'comment_text', 'wpmark_filter_comment_content' );

Этот фильтр удалит комментарии, содержащие слова из чёрного списка, скрывая их содержимое.

Как тестировать и отлаживать фильтры в своем плагине

Для отладки фильтров удобно использовать функции error_log() или плагины для отладки (например, Query Monitor). В коде можно вставлять логирование, чтобы проверять, вызывается ли фильтр и с какими параметрами:

function wpmark_debug_filter( $content ) {
    error_log( 'Фильтр сработал, содержимое: ' . substr( $content, 0, 50 ) );
    return $content;
}
add_filter( 'the_content', 'wpmark_debug_filter' );

Также полезно использовать remove_filter(), чтобы отключить фильтры при необходимости.

Интеграция с плагинами WPShop

Если вы используете плагин WPRemark для автоматизации отзывов, можно добавить фильтр для обработки текста отзывов перед выводом:

function wpmark_filter_wpremark_reviews( $review_text ) {
    // Например, заменим запрещённые слова на звездочки
    $censored_words = array('плохой', 'ужасный');
    foreach ( $censored_words as $word ) {
        $review_text = str_ireplace( $word, '****', $review_text );
    }
    return $review_text;
}
add_filter( 'wpremark_review_text', 'wpmark_filter_wpremark_reviews' );

Такой подход позволит кастомизировать отзывы пользователей без правки кода плагина WPRemark.

Выводы по созданию фильтрового плагина WordPress

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

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

Как отключить метод отправки писем PHP mail в WordPress и настроить SMTP
16.02.2026
Как использовать WPCommunity для создания форума на WordPress
22.12.2025
Как удалять старые ревизии постов в WordPress для оптимизации базы данных
20.02.2026
Как создать автоматический снимок экрана страницы в WordPress
28.01.2026
Как создать собственный шорткод с параметрами в WordPress: практическое руководство
21.01.2026