Как использовать регулярные выражения в WordPress для фильтрации данных

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

Что такое регулярные выражения и зачем они нужны в WordPress

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

  • Валидация пользовательского ввода (email, телефон, URL).
  • Фильтрация и замена контента в постах и комментариях.
  • Обработка и парсинг данных из внешних источников.
  • Настройка сложных условий для WP_Query и фильтров.

Стандартные функции PHP для работы с регулярными выражениями — preg_match, preg_replace, preg_split и другие, полностью доступны в WordPress.

Пример 1. Валидация email с помощью регулярных выражений в WordPress

WordPress имеет собственную функцию is_email(), но иногда нужно более строгое или специфичное правило проверки. Рассмотрим, как создать собственную функцию проверки email с регулярным выражением.

function wpconfig_is_valid_email($email) {
    $pattern = '/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i';
    return preg_match($pattern, $email) === 1;
}

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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = sanitize_email($_POST['email']);
    if (!wpconfig_is_valid_email($email)) {
        echo 'Введите корректный email.';
    } else {
        echo 'Email прошёл проверку.';
    }
}

Пример 2. Фильтрация короткого кода с регулярными выражениями

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

Пример: шорткод [wpconfig_filter text="пример текста"] будет выводить только слова, подходящие под регулярное выражение.

function wpconfig_shortcode_filter($atts) {
    $atts = shortcode_atts(array(
        'text' => '',
    ), $atts, 'wpconfig_filter');

    $pattern = '/\b[а-яё]{4,}\b/ui'; // слова кириллицей длиной от 4 символов
    preg_match_all($pattern, $atts['text'], $matches);

    if (!empty($matches[0])) {
        return implode(', ', $matches[0]);
    }
    return 'Совпадений не найдено';
}
add_shortcode('wpconfig_filter', 'wpconfig_shortcode_filter');

В этом примере регулярное выражение ищет слова на русском языке не короче 4 букв. Результат будет выведен через запятую.

Пример 3. Использование регулярных выражений в WP_Query для фильтрации по метаполям

По умолчанию WP_Query не поддерживает фильтрацию с регулярными выражениями. Но можно комбинировать SQL-запросы и хуки. Для этого используем фильтр posts_where и добавим условие с REGEXP.

function wpconfig_posts_where_regexp($where, $query) {
    global $wpdb;
    if ($query->get('meta_key_regexp')) {
        $meta_key = esc_sql($query->get('meta_key_regexp'));
        $regexp = esc_sql($query->get('meta_value_regexp'));
        $where .= " AND EXISTS (
            SELECT 1 FROM {$wpdb->postmeta} pm
            WHERE pm.post_id = {$wpdb->posts}.ID
            AND pm.meta_key = '{$meta_key}'
            AND pm.meta_value REGEXP '{$regexp}'
        )";
    }
    return $where;
}
add_filter('posts_where', 'wpconfig_posts_where_regexp', 10, 2);

Теперь можно использовать этот параметр при запросе:

$query = new WP_Query(array(
    'meta_key_regexp' => 'custom_field',
    'meta_value_regexp' => '^[0-9]{3}-[A-Z]+$',
));

Этот запрос вернёт посты, где custom_field соответствует шаблону три цифры, дефис, заглавные буквы.

Рекомендованные плагины для работы с регулярными выражениями в WordPress

Если не хочется писать код самостоятельно, можно использовать проверенные плагины с поддержкой RegEx:

  • WP phpMyAdmin — для прямого управления базой и сложных запросов с регулярными выражениями.
  • Clearfy Pro — оптимизация и фильтрация, поддержка RegEx для SEO и безопасности.
  • Search Regex — поиск и массовая замена в базе с использованием регулярных выражений.

Практические советы по написанию регулярных выражений для WordPress

Чтобы регулярки работали эффективно и не замедляли сайт, учитывайте следующие рекомендации:

  • Используйте жадные и ленивые квантификаторы, чтобы избежать избыточных совпадений.
  • Проверяйте регулярные выражения через онлайн-редакторы (regex101.com, regexr.com) перед применением.
  • Экранируйте специальные символы в шаблонах и параметрах.
  • Для кириллицы используйте модификатор u (UTF-8), чтобы корректно обрабатывать русские символы.
  • Минимизируйте сложность регулярных выражений, чтобы избежать ошибок и тормозов.

Как отладить и протестировать регулярные выражения в WordPress

Отладка регулярных выражений — важный этап. Для этого можно создать временный файл плагина с функцией, которая выводит результат проверки или замену. Пример простой функции для теста:

function wpconfig_test_regex($pattern, $subject) {
    if (preg_match($pattern, $subject, $matches)) {
        echo 'Совпадение найдено: ' . htmlspecialchars($matches[0]);
    } else {
        echo 'Совпадений нет';
    }
}

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

Заключение по использованию регулярных выражений в WordPress

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

Как удалить, изменить и запретить meta robots в WordPress: практические решения
06.03.2026
Как удалить и изменить авторские права в WordPress: полное руководство
11.11.2025
Как запретить роботам индексировать страницы WordPress: практическое руководство с примерами кода
05.01.2026
Как настроить очистку кеша в WordPress: практическое руководство
03.12.2025
Как изменить размер и оптимизировать изображения в WordPress без потери качества
12.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее