Как отключить автоматическое изменение URL в WordPress

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

Почему WordPress автоматически меняет URL и какие проблемы это создаёт

Когда вы создаёте новую запись или таксономию, WordPress формирует чпу (slug) на основе заголовка. Это делается для удобства SEO и пользователя — URL становится читаемым и понятным. Однако иногда WordPress может изменить URL в нежелательном для вас формате:

  • заменять пробелы на дефисы;
  • удалять заглавные буквы и заменять их на строчные;
  • добавлять к URL цифры, если такой slug уже есть;
  • удалять специальные символы или заменять их на дефисы.

Это бывает неудобно, если, например, вы хотите сохранить регистрационную чувствительность или использовать нестандартные символы в URL. Также автоматическая нумерация может запутать структуру сайта и SEO.

Как отключить автоматическое изменение URL с помощью фильтров WordPress

Чтобы контролировать формирование URL, можно использовать фильтры WordPress, которые позволяют вмешаться в процесс генерации slug.

Фильтр sanitize_title — основа изменения slug

Функция sanitize_title отвечает за очистку и форматирование заголовка для использования в URL. Мы можем переопределить её поведение, добавив свой фильтр, чтобы сохранить точный текст.

Пример функции для отключения нормализации (с сохранением регистра и специальных символов):

function wptour_preserve_slug($title, $raw_title, $context) {
    // Возвращаем исходный заголовок без изменений
    return $raw_title;
}
add_filter('sanitize_title', 'wptour_preserve_slug', 10, 3);

Добавьте этот код в файл functions.php вашей темы или в плагин для кастомных функций. Теперь WordPress будет использовать исходный заголовок как slug без изменений.

Обработка конфликтов slug — отключаем добавление цифр

По умолчанию, если slug уже существует, WordPress добавляет к нему число. Чтобы отключить это поведение, нужно переопределить функцию, которая отвечает за проверку уникальности slug — wp_unique_post_slug.

Пример решения с помощью фильтра:

function wptour_disable_slug_increment($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
    global $wpdb;
    // Проверяем, существует ли slug в базе
    $exists = $wpdb->get_var($wpdb->prepare(
        "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1",
        $slug, $post_ID
    ));
    if ($exists) {
        // Возвращаем оригинальный slug без добавления цифр
        return $original_slug;
    }
    return $slug;
}
add_filter('wp_unique_post_slug', 'wptour_disable_slug_increment', 10, 6);

Этот фильтр проверяет, существует ли slug, и при обнаружении конфликта не добавляет суффикс с цифрой, а возвращает исходный slug. Будьте осторожны — это может привести к конфликтам URL, если не контролировать уникальность вручную.

Использование плагинов для управления URL и slug

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

  • WP Permalink Manager — позволяет редактировать и отключать автоматическую генерацию URL для записей и таксономий.
  • Permalink Editor — расширяет возможности редактирования slug прямо в админке.
  • Clearfy Pro — содержит опции для оптимизации URL и отключения некоторых автоматических функций WordPress, включая нормализацию slug.

Эти плагины можно найти и установить через официальный каталог WordPress или скачать с wpshop.ru.

Практические рекомендации по работе с URL в WordPress

1. Планируйте структуру URL заранее

Чтобы избежать конфликтов и необходимости ручной корректировки slug, составьте структуру URL и придерживайтесь её. Используйте в заголовках страницы и записей слова, подходящие для URL.

2. Контролируйте уникальность slug

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

3. Используйте фильтры только при необходимости

Отключать автоматическую нормализацию стоит лишь если у вас есть чёткое понимание, зачем это нужно. В большинстве случаев стандартное поведение WordPress оптимально.

Пример комплексного решения в functions.php для wptour.ru

function wptour_sanitize_title_preserve($title, $raw_title, $context) {
    // Оставляем slug как есть, без преобразований
    return $raw_title;
}
add_filter('sanitize_title', 'wptour_sanitize_title_preserve', 10, 3);

function wptour_disable_slug_numbering($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
    global $wpdb;
    $exists = $wpdb->get_var($wpdb->prepare(
        "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1",
        $slug, $post_ID
    ));
    if ($exists) {
        return $original_slug; // Возвращаем исходный slug без цифр
    }
    return $slug;
}
add_filter('wp_unique_post_slug', 'wptour_disable_slug_numbering', 10, 6);

Добавьте этот код в тему, чтобы отключить автоматическую правку и нумерацию URL. Это позволит создавать более точные и предсказуемые адреса страниц.

WooCommerce: как использовать хуки для добавления пользовательских функций
07.05.2026
WooCommerce: как добавить дополнительные поля в форму оплаты без плагинов
26.05.2026
Как использовать WordPress Cron для автоматизации задач
13.12.2025
WooCommerce: как добавить собственный тип доставки с условиями
09.06.2026
Как создать автоматические уведомления о неактивных пользователях в WordPress
20.01.2026

Уроки со скриншотами, подробные руководства