Как изменить регистр слагов в WordPress

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

Почему WordPress по умолчанию преобразует слаги к нижнему регистру

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

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

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

Для изменения регистра слагов при создании или обновлении постов можно использовать фильтр wp_unique_post_slug. Он позволяет модифицировать сгенерированный slug перед сохранением в базу данных.

Ниже пример функции, которая сохраняет слаг в верхнем регистре (например, для демонстрации, в реальности верхний регистр в URL — не лучший вариант):

function wp7_change_slug_case($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
    // Преобразуем слаг в верхний регистр
    $slug = strtoupper($slug);
    return $slug;
}
add_filter('wp_unique_post_slug', 'wp7_change_slug_case', 10, 6);

Обратите внимание, что такой подход может привести к проблемам с SEO и доступностью, так как большинство веб-серверов и браузеров воспринимают URL в нижнем регистре. Используйте с осторожностью.

Изменение регистра слагов для таксономий

Для таксономий WordPress жестко приводит слаги к нижнему регистру. Однако можно перехватить процесс сохранения термина с помощью хука pre_insert_term и изменить слаг до сохранения.

function wp7_preserve_taxonomy_slug_case($slug, $term, $taxonomy) {
    // Пример: сохраняем слаг с заглавной первой буквой
    $slug = ucfirst($slug);
    return $slug;
}
add_filter('pre_insert_term', 'wp7_preserve_taxonomy_slug_case', 10, 3);

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

Использование плагинов для управления слагами и их регистром

Если вы не хотите писать код, существуют плагины, которые позволяют редактировать слаги более гибко:

  • Permalink Manager Lite — позволяет настроить URL для постов и таксономий с удобным интерфейсом.
  • Custom Permalinks — дает возможность вручную прописывать любые URL для записей и страниц.
  • WP Slug Case — специализированный плагин для изменения регистра слагов (редко встречается, требует проверки совместимости).

Использование плагинов уменьшает риск ошибок и конфликтов, особенно если вы не уверены в коде.

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

Изменение регистра слагов может вызвать проблемы с SEO и работой сайта, если не соблюдать осторожность. Вот несколько рекомендаций:

  • Проверьте, поддерживает ли ваш сервер регистрозависимые URL.
  • Используйте постоянные редиректы 301 при изменении URL слагов, чтобы сохранить позиции в поисковиках.
  • Тестируйте изменения на локальной копии сайта или staging-сервере.
  • Избегайте смешанного регистра в URL, чтобы не создавать дубли и путаницу.

Пример редиректа после изменения слага

Если вы изменили регистр слага, добавьте в файл .htaccess правило для редиректа:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/old-slug/$ [NC]
RewriteRule ^ /New-Slug/ [R=301,L]

Это обеспечит перенаправление со старого URL на новый с нужным регистром.

Как изменить регистр слагов у пользовательских типов записей (CPT)

При регистрации CPT через функцию register_post_type параметр rewrite позволяет указать slug, но регистр обычно приводит к нижнему. Чтобы изменить регистр динамически, можно использовать фильтр post_type_link для модификации ссылки.

function wp7_custom_cpt_slug_case($post_link, $post, $leavename, $sample) {
    if ('your_cpt' == $post->post_type) {
        // Изменяем регистр слага CPT в ссылке
        $post_link = str_replace('/your_cpt/', '/Your_CPT/', $post_link);
    }
    return $post_link;
}
add_filter('post_type_link', 'wp7_custom_cpt_slug_case', 10, 4);

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

Итоги и рекомендации

Изменение регистра слагов в WordPress — задача нетривиальная, так как платформа изначально ориентирована на нижний регистр для URL. Тем не менее, с помощью фильтров и хуков можно реализовать сохранение или изменение регистра для постов, таксономий и пользовательских типов записей.

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

Как изменить авторизацию в WordPress через AJAX без плагинов
15.12.2025
Как создать динамические формы с помощью WPForms в WordPress
22.12.2025
Как создать динамическое меню в WordPress с применением WP7
05.01.2026
Как защитить WordPress от bruteforce атак
20.11.2025
Как удалить или заблокировать плагин WordPress правильно
08.11.2025