Как изменить автоматический регистратор slug в WordPress для ЧПУ URL

При создании записей, страниц или пользовательских типов записей (custom post types) WordPress автоматически формирует слаг (slug) — часть URL, которая обычно генерируется на основе заголовка и преобразуется в нижний регистр с дефисами. Однако бывают ситуации, когда нужно изменить этот стандартный алгоритм генерации slug: например, использовать заглавные буквы, убрать дефисы, заменить символы, добавить префиксы или суффиксы. В этой статье мы подробно разберём, как изменить автоматический регистратор slug в WordPress, чтобы получить ЧПУ URL, соответствующие вашим требованиям.

Почему нужно менять автоматический слаг в WordPress

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

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

В таких случаях стандартного поведения WordPress недостаточно, и необходимо вмешиваться программно.

Как WordPress генерирует слаг: разбор по шагам

Функция wp_unique_post_slug() отвечает за проверку уникальности slug, а sanitize_title() — за очистку и форматирование. Когда вы создаёте новую запись, WordPress применяет фильтр wp_unique_post_slug для окончательной обработки слага.

Чтобы изменить генерацию slug, мы можем использовать фильтр wp_unique_post_slug или sanitize_title. Рассмотрим оба варианта.

Фильтр sanitize_title: изменение базового формата slug

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

add_filter('sanitize_title', 'wptour_sanitize_title_keep_case', 10, 3);
function wptour_sanitize_title_keep_case($title, $raw_title, $context) {
    if ($context === 'save') {
        // Заменяем пробелы на подчеркивания вместо дефисов
        $title = str_replace(' ', '_', $raw_title);
        // Убираем нежелательные символы, кроме букв, цифр, подчеркиваний
        $title = preg_replace('/[^A-Za-z0-9_]/', '', $title);
        return $title;
    }
    return $title;
}

Этот код заменяет дефисы на подчеркивания, сохраняет регистр букв и удаляет все символы, кроме латиницы, цифр и подчеркивания. Так вы получаете slug, который будет выглядеть например как My_Custom_Post, а не my-custom-post.

Фильтр wp_unique_post_slug: добавление логики уникальности

Если требуется добавить префиксы или суффиксы к слагу, можно использовать фильтр wp_unique_post_slug. Этот фильтр применяется после того, как WordPress сформировал уникальный slug.

add_filter('wp_unique_post_slug', 'wptour_add_prefix_to_slug', 10, 6);
function wptour_add_prefix_to_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
    // Добавим префикс 'wptour-'
    $prefix = 'wptour-';
    if (strpos($slug, $prefix) !== 0) {
        $slug = $prefix . $slug;
    }
    return $slug;
}

Теперь при сохранении записи slug будет начинаться с wptour-, например: wptour-my-post. Это удобно для группировки или выделения записей в URL.

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

1. Сохранение регистра в slug и замена дефисов на подчеркивания

Если вы хотите, чтобы ваши URL выглядели как My_Custom_Post, а не my-custom-post, используйте фильтр sanitize_title из примера выше. Это полезно, если ваш бренд использует капслок или camelCase.

2. Добавление даты или категории в slug

Для SEO и структурированности можно автоматически добавлять дату или категорию перед slug. Это делается через wp_unique_post_slug или при сохранении записи через хук save_post.

add_action('save_post', 'wptour_add_date_to_slug', 20, 3);
function wptour_add_date_to_slug($post_ID, $post, $update) {
    if ($post->post_type !== 'post') return;
    // Получаем дату публикации в формате YYYYMMDD
    $date_prefix = date('Ymd', strtotime($post->post_date));
    $slug = $post->post_name;
    // Проверяем, что дата не добавлена
    if (strpos($slug, $date_prefix) !== 0) {
        $new_slug = $date_prefix . '-' . $slug;
        // Обновляем слаг записи
        wp_update_post(array(
            'ID' => $post_ID,
            'post_name' => $new_slug
        ));
    }
}
<

После сохранения slug будет выглядеть как 20240602-my-post. Это упрощает сортировку и анализ URL.

3. Использование плагина Clearfy для тонкой настройки URL

Если не хочется писать код, можно использовать плагин Clearfy. Он позволяет управлять формированием URL, отключать автофикс слагов и многое другое через удобный интерфейс.

Рекомендации по безопасности и совместимости

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

Также учтите, что некоторые плагины и темы могут полагаться на стандартный формат slug, поэтому перед внедрением изменений проверьте совместимость.

Выводы

Изменение автоматического регистратора slug в WordPress — мощный инструмент для настройки URL под конкретные задачи. Используя фильтры sanitize_title и wp_unique_post_slug, вы можете полностью контролировать формат ЧПУ ссылок. Для удобства можно применять плагины, например, Clearfy, которые дают готовые решения без написания кода.

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

Как создать собственный REST API endpoint в WordPress
15.11.2025
Как создать автоматический импорт постов в WordPress с помощью WP All Import
02.02.2026
WooCommerce: как избежать ошибок при массовом импорте продуктов
18.05.2026
Как удалить файл robots.txt из WordPress и настроить собственный
17.12.2025
Как создать автоматические редакции постов в WordPress
26.03.2026

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