Изменение URL страницы (пермалинк) в WordPress — задача, с которой сталкиваются многие разработчики и администраторы сайтов. Иногда нужно изменить адрес страницы без создания перенаправления 301, чтобы не потерять трафик или сохранить структуру сайта. В этой статье мы подробно рассмотрим, как это сделать корректно и безопасно, какие нюансы учитывать и приведем примеры кода.
Почему важно правильно менять URL страниц
URL-адрес страницы — это не просто ссылка, это важный элемент SEO и навигации. Неправильное изменение может привести к ошибкам 404, потере позиций в поисковых системах и ухудшению пользовательского опыта. Многие пытаются просто изменить слаг в редакторе, но это создает перенаправление или ломает ссылки.
Цель — изменить URL без создания лишних перенаправлений, чтобы структура сайта осталась чистой и понятной. Это особенно важно для сайтов с большим количеством страниц и сложной иерархией.
Кроме того, стандартный функционал WordPress не предусматривает прямого изменения URL без перенаправления, поэтому придется воспользоваться пользовательскими функциями или плагинами.
Как WordPress формирует URL страниц
WordPress генерирует постоянные ссылки на основе типа записи, слага и правил перезаписи (rewrite rules). Для страниц используется поле post_name в базе данных. При изменении слага в административной панели WordPress создает автоматическое перенаправление, если используется плагин редиректов или кэш.
Перезапись URL происходит через правила, которые хранятся в базе и обновляются через функцию flush_rewrite_rules(). Это значит, что для корректной работы новых URL нужно обновить правила.
Чтобы изменить URL без перенаправления, нужно вручную изменить слаг записи и правильно обновить rewrite rules, а также убедиться, что старый URL больше не доступен.
Метод изменения URL без перенаправления через код
Рассмотрим пример, как изменить слаг страницы программно с использованием функции, назовем её wplearn_change_page_slug. Эта функция обновит поле post_name в базе и обновит правила перезаписи.
function wplearn_change_page_slug($page_id, $new_slug) {
if (!get_post($page_id)) {
return new WP_Error('invalid_page', 'Страница с таким ID не найдена');
}
// Обновляем слаг
$update_result = wp_update_post(array(
'ID' => $page_id,
'post_name' => sanitize_title($new_slug) // очищаем слаг
));
if (is_wp_error($update_result)) {
return $update_result;
}
// Обновляем правила перезаписи
flush_rewrite_rules();
return true;
}Важно: при вызове этой функции старый URL перестанет работать без перенаправления, поэтому убедитесь, что ссылки обновлены на сайте и вне его.
Пример использования функции
Вы можете встроить этот код в файл functions.php вашей темы или создать небольшой плагин:
$result = wplearn_change_page_slug(42, 'novyy-adres-stranitsy');
if (is_wp_error($result)) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'URL страницы успешно изменён';
}Использование плагинов для управления URL без перенаправлений
Если вы не хотите писать код, можно воспользоваться плагинами. Но большинство плагинов для изменения URL автоматически создают редиректы, чтобы не потерять SEO.
Тем не менее, существуют плагины, позволяющие более тонко управлять постоянными ссылками, например:
- Permalink Manager Lite — дает возможность изменять URL для любых типов записей и отключать автоматические редиректы.
- Custom Permalinks — позволяет задать любой URL для страниц и записей, но требует аккуратного управления, чтобы избежать конфликтов.
В настройках этих плагинов можно отключить создание редиректов при смене URL. Однако делать это нужно осознанно, чтобы не потерять трафик.
Как отключить редиректы в Permalink Manager Lite
Перейдите в настройки плагина, найдите опцию, отвечающую за автоматические редиректы, и отключите её. После этого вы сможете менять URL без создания 301 перенаправлений.
Что делать, если возникли ошибки 404 после смены URL
Если после изменения URL без перенаправления пользователи видят ошибки 404, значит старые ссылки остались в индексах поисковиков или на других ресурсах.
Рекомендуется:
- Проверить наличие и правильность правил перезаписи через
flush_rewrite_rules(). - Обновить внутренние ссылки на сайте, чтобы они указывали на новый URL.
- По возможности уведомить пользователей и поисковые системы о смене URL через Search Console.
Если старые адреса важны, подумайте над созданием 301 редиректов вручную, чтобы не потерять посетителей.
Подводим итоги и рекомендации по смене URL
Изменение URL страницы в WordPress без перенаправления — задача, требующая аккуратности и понимания внутренней работы CMS. Программный метод через функцию wplearn_change_page_slug позволяет гибко менять слаг и обновлять правила перезаписи, но требует внимательности.
Использование плагинов удобнее, но часто сопровождается автоматическими редиректами. Отключать их стоит только при полном контроле над ссылками.
Всегда проверяйте работоспособность новых URL, обновляйте внутренние ссылки и следите за индексированием в поисковых системах.
Если вы разработчик, добавляйте в свои проекты функции и утилиты для управления URL, чтобы делать сайты более удобными и SEO-дружелюбными.