В WordPress URL каждой записи формируется на основе уникального slug — человекочитаемой части адреса, которая обычно совпадает с заголовком статьи, но может быть изменена. Бывают ситуации, когда нужно изменить slug записи после публикации, например, для улучшения SEO, упрощения адреса или исправления ошибок. В этой статье разберём, как изменить slug записи программно и вручную, а также как избежать проблем с уникальностью и конфликтами URL.
Что такое slug в WordPress и зачем его менять
Slug — это часть URL, которая идентифицирует конкретную запись, страницу или таксономию. Например, для записи с адресом https://example.com/kak-sozdat-shortkod slug — это kak-sozdat-shortkod.
Изменение slug полезно для:
- Оптимизации URL под поисковые запросы;
- Исправления опечаток и ошибок в адресах;
- Упрощения и стандартизации структуры ссылок;
- Изменения языка или транслитерации;
- Удаления лишних слов и символов.
Однако важно помнить, что изменение slug может привести к потере старых ссылок, если не настроить правильные редиректы.
Как изменить slug записи через админку WordPress
Самый простой способ изменить slug — воспользоваться стандартным редактором WordPress.
- Откройте нужную запись для редактирования.
- Под заголовком найдите поле с URL или нажмите кнопку «Изменить» рядом с permalink.
- Внесите нужный slug, используя латинские буквы, цифры и дефисы.
- Сохраните изменения, нажав «Обновить».
Этот метод подходит для единичных изменений, но если нужно массово менять slug или автоматизировать процесс, лучше использовать код.
Программное изменение slug записи: пример функции
Ниже пример функции wphost_change_post_slug, которая меняет slug по ID записи. Это удобно для автоматизации или интеграции с другими скриптами.
function wphost_change_post_slug($post_id, $new_slug) {
// Проверяем, что запись существует
$post = get_post($post_id);
if (!$post) {
return new WP_Error('no_post', 'Запись не найдена');
}
// Проверяем уникальность slug
$unique_slug = wp_unique_post_slug($new_slug, $post_id, $post->post_status, $post->post_type, $post->post_parent);
// Обновляем запись с новым slug
$update_result = wp_update_post([
'ID' => $post_id,
'post_name' => $unique_slug
], true);
if (is_wp_error($update_result)) {
return $update_result;
}
return true;
}Использовать функцию можно так:
$result = wphost_change_post_slug(123, 'novyj-slug-dlja-stati');
if (is_wp_error($result)) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'Slug изменён успешно';
}Функция проверяет, существует ли запись, генерирует уникальный slug с помощью встроенной функции wp_unique_post_slug, и обновляет запись.
Особенности и подводные камни при изменении slug
Уникальность slug и конфликты URL
WordPress не допускает одинаковые slug для записей одного типа с одним родителем (в случае иерархических типов). Если попытаться установить slug, который уже занят, WordPress добавит суффикс, например my-post-2. Чтобы избежать этого, используйте функцию wp_unique_post_slug, как в примере выше.
Редиректы и SEO
После изменения slug старые URL перестают работать, если не настроить 301 редиректы. Для этого можно:
- Использовать плагины типа Clearfy Pro, которые умеют автоматически создавать редиректы;
- Добавить редиректы вручную в .htaccess или через сервер (Nginx);
- Реализовать редиректы программно через хуки WordPress.
Изменение slug для кастомных типов записей и таксономий
Для кастомных типов постов и таксономий slug хранится в том же поле post_name (для записей) или в терминах таксономии. Пример изменения slug термина:
function wphost_change_term_slug($term_id, $taxonomy, $new_slug) {
$term = get_term($term_id, $taxonomy);
if (is_wp_error($term) || !$term) {
return new WP_Error('no_term', 'Термин не найден');
}
$result = wp_update_term($term_id, $taxonomy, ['slug' => $new_slug]);
return $result;
}Так можно менять URL категорий, меток и других таксономий.
Практические советы по работе со slug
Используйте транслитерацию
Для русскоязычных сайтов рекомендуется использовать транслитерацию в slug. Это улучшает читаемость URL и SEO. Можно применить стандартные библиотеки транслитерации или плагины с такой функцией.
Избегайте частых изменений
Частые изменения slug негативно влияют на SEO и пользовательский опыт. Планируйте структуру URL заранее.
Автоматизация с помощью плагинов
Если планируется массовое изменение slug, можно использовать плагины, например, Clearfy Pro, которые имеют функции управления URL и автоматического создания редиректов.
Заключение: лучший подход к изменению slug в WordPress
Изменение slug — мощный инструмент для оптимизации и управления адресами сайта. Лучший подход зависит от целей и объёма изменений:
- Для единичных случаев — вручную через админку.
- Для программного контроля — использовать функции и хуки, как в примерах выше.
- Для массовых изменений и SEO — сочетать программные методы с плагинами, которые умеют создавать редиректы.
Не забывайте проверять работоспособность старых URL и настраивать 301 редиректы, чтобы сохранить позиции сайта в поисковых системах.