Как удалить или изменить slug постов в WordPress без плагинов

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

Что такое slug и зачем его менять в WordPress

Slug — это уникальный идентификатор записи в URL. Например, в ссылке https://example.com/blog/my-post slug — «my-post». WordPress автоматически генерирует slug из заголовка записи, но может понадобиться его изменить по разным причинам:

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

Важно помнить, что изменение slug влияет на ссылки, которые уже проиндексированы поисковиками, поэтому стоит делать редиректы со старых URL на новые.

Как изменить slug записи вручную в админке WordPress

Самый простой способ — отредактировать slug прямо в админке:

  1. Откройте запись или страницу в режиме редактирования.
  2. Под заголовком найдите поле «Постоянная ссылка» или «URL».
  3. Нажмите «Изменить» и введите новый slug.
  4. Сохраните изменения.

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

Как программно изменить slug записи при сохранении

Для автоматической замены slug можно использовать хук wp_insert_post_data. Например, чтобы убрать все дефисы из slug и сделать его полностью в нижнем регистре, добавим функцию в файл functions.php вашей темы или в кастомный плагин:

function wplink_change_post_slug($data, $postarr) {
    if ($data['post_type'] === 'post') {
        $slug = $data['post_name'];
        // Убираем дефисы и делаем все маленькими буквами
        $slug = str_replace('-', '', $slug);
        $slug = strtolower($slug);
        $data['post_name'] = $slug;
    }
    return $data;
}
add_filter('wp_insert_post_data', 'wplink_change_post_slug', 10, 2);

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

Пример: замена slug на ID записи

Иногда нужно, чтобы slug совпадал с ID записи. Для этого используйте такой код:

function wplink_slug_to_post_id($data, $postarr) {
    if ($data['post_type'] === 'post' && empty($data['post_name'])) {
        $data['post_name'] = $postarr['ID'];
    }
    return $data;
}
add_filter('wp_insert_post_data', 'wplink_slug_to_post_id', 10, 2);

Обратите внимание, что при создании новой записи ID в $postarr может быть пустым, поэтому лучше использовать хук save_post для подобных задач.

Как полностью убрать slug из URL постов

Стандартная структура URL в WordPress для записей обычно содержит slug, например: https://site.ru/post-slug. Если нужно убрать slug и сделать URL короче, например https://site.ru/123, где 123 — ID записи, есть несколько способов.

Использование кастомной структуры постоянных ссылок

В настройках WordPress в разделе «Постоянные ссылки» можно задать структуру URL. Например, чтобы использовать ID записи в URL, установите такую структуру:

/%post_id%/

Но это не всегда удобно и может повлиять на SEO, так как URL становится менее информативным.

Удаление таксономий из URL

Если у вас кастомные типы записей с префиксами (slug), например https://site.ru/custom-post/my-post, можно убрать префикс программно:

function wplink_remove_cpt_slug($post_link, $post, $leavename) {
    if ('custom_post' === $post->post_type && 'publish' === $post->post_status) {
        $post_link = str_replace('/custom_post/', '/', $post_link);
    }
    return $post_link;
}
add_filter('post_type_link', 'wplink_remove_cpt_slug', 10, 3);

function wplink_parse_request_trick($query) {
    if (!$query->is_main_query()) return;
    if (2 !== count($query->query) || !isset($query->query['page'])) return;

    if (!empty($query->query['page'])) {
        $query->set('post_type', array('custom_post', 'post', 'page'));
    }
}
add_action('pre_get_posts', 'wplink_parse_request_trick');

Этот код убирает из URL префикс кастомного типа записи. Однако нужно внимательно тестировать, чтобы не возникало конфликтов с другими страницами.

Рекомендации по работе с редиректами при смене slug

Изменение slug приводит к изменению URL, что может вызвать 404 ошибки и потерю трафика. Для этого обязательно настраивайте редиректы со старых URL на новые:

  • Используйте плагин Clearfy Pro — у него есть удобный модуль для управления редиректами.
  • Можно добавить простой редирект в файл .htaccess или через функции темы:
function wplink_redirect_old_slug() {
    if (strpos($_SERVER['REQUEST_URI'], '/old-slug/') !== false) {
        wp_redirect(home_url('/new-slug/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wplink_redirect_old_slug');

Такой подход помогает сохранить SEO позиции и улучшить пользовательский опыт.

Полезные плагины для работы со slug и URL на WordPress

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

  • Clearfy Pro — улучшает SEO и безопасность, позволяет управлять редиректами и урлами. Подробнее на wpshop.ru.
  • Permalink Manager Lite — позволяет редактировать permalinks для любых типов записей.
  • Redirection — для управления 301 редиректами.

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

Итоговые советы по работе со slug в WordPress

При работе со slug запомните несколько важных правил:

  • Всегда проверяйте уникальность slug, чтобы избежать конфликтов URL.
  • Настраивайте редиректы при изменении URL, чтобы не потерять трафик.
  • Используйте фильтры wp_insert_post_data и post_type_link для автоматизации изменений.
  • Тестируйте изменения на локальной среде или staging-сайте перед применением на боевом ресурсе.
  • Оптимизируйте slug для SEO — делайте их короткими, понятными и релевантными содержимому.

Такой подход позволит вам гибко управлять URL и улучшать структуру сайта без лишних плагинов и с минимальными рисками.

Как создать динамические формы в WordPress с помощью плагинов и кода
04.03.2026
Как удалить или изменить slug таксономии в WordPress
15.02.2026
Как создать управляемые списки в WordPress: пошаговое руководство
05.02.2026
Исключение товаров по атрибутам из корзины WooCommerce
18.05.2026
Как исключить товары по атрибутам из корзины WooCommerce
27.04.2026