Почему может понадобиться удалить или изменить URL страницы без перенаправления
В процессе разработки или поддержки сайта на WordPress иногда возникает задача удалить или изменить URL страницы без использования стандартных перенаправлений 301. Это может понадобиться в случаях, когда нужно полностью убрать страницу из индекса поисковых систем без создания цепочек редиректов, либо при динамическом формировании URL, когда перенаправления усложняют логику работы сайта.
Однако стоит понимать, что полное удаление URL без перенаправления может привести к ошибке 404 для посетителей и поисковых систем. Поэтому важно понимать, как грамотно реализовать такую задачу и какие альтернативы есть для корректной работы сайта.
В этой статье мы подробно рассмотрим, как удалить или изменить URL страницы в WordPress программно и безопасно, без автоматических редиректов.
Как изменить постоянную ссылку (permalink) страницы программно
WordPress хранит URL страниц и постов в базе данных в поле post_name таблицы wp_posts. Изменить URL можно, обновив этот слаг (slug) через функцию wp_update_post или напрямую в базе.
Например, чтобы изменить URL страницы с ID 42, можно использовать следующий код:
function wpmake_change_page_url($post_id, $new_slug) {
$post = get_post($post_id);
if (!$post) return false;
$post->post_name = $new_slug;
wp_update_post($post);
return true;
}
// Пример использования
wpmake_change_page_url(42, 'novyj-url-stranicy');После выполнения этого кода адрес страницы изменится на https://site.ru/novyj-url-stranicy/. При этом WordPress не устанавливает никаких редиректов и старая ссылка станет недоступна (ошибка 404).
Важные моменты при изменении URL
- Обязательно проверьте, что новый слаг уникален и не конфликтует с другими страницами или таксономиями.
- После изменения URL можно обновить структуру постоянных ссылок в админке (Настройки → Постоянные ссылки), чтобы сбросить кэш rewrite правил.
- Оставьте старые URL без перенаправлений только если вы уверены, что трафик на них минимален или вы готовы к ошибкам 404.
Как программно удалить страницу и тем самым убрать её URL
Если необходимо полностью удалить страницу, чтобы URL перестал работать, можно сделать это программно через функцию wp_delete_post. Например:
function wpmake_delete_page_by_id($post_id) {
if (get_post($post_id)) {
wp_delete_post($post_id, true); // true - удалить без возможности восстановления
return true;
}
return false;
}
// Пример использования
wpmake_delete_page_by_id(42);После удаления страницы URL перестанет работать — сервер будет отдавать 404 ошибку.
Как избежать нежелательных 404 после удаления
Если вы не хотите, чтобы пользователи и поисковики сталкивались с ошибками 404, рассмотрите возможность:
- Добавить кастомную страницу 404 с полезной навигацией.
- Использовать плагин Clearfy Pro (перейти к плагину), который помогает управлять редиректами и ошибками 404.
Как временно отключить доступ по URL без удаления страницы
Если нужно временно скрыть страницу, не удаляя её, можно использовать фильтр WordPress для выдачи 404 на нужном URL. Это удобно, если вы хотите, чтобы URL не работал, но страница осталась в админке.
function wpmake_disable_page_url() {
if (is_page('starij-url-stranicy')) { // замените на нужный slug
global $wp_query;
$wp_query->set_404();
status_header(404);
nocache_headers();
include(get_query_template('404'));
exit;
}
}
add_action('template_redirect', 'wpmake_disable_page_url');Этот код заставит WordPress отдавать 404 ошибку при переходе на страницу с указанным slug. При этом страница останется доступной в админке и не будет удалена.
Преимущества такого подхода
- Легко включать и отключать без потери данных.
- Не нужно возиться с редиректами.
- Можно показывать кастомный шаблон 404 с полезной информацией.
Использование плагина My Popup для уведомления об изменении URL
Если вы изменили URL страницы и не хотите терять посетителей, можно оповестить пользователей с помощью всплывающего окна. Для этого отлично подойдет плагин My Popup, который позволяет создавать кастомные уведомления и всплывающие окна на сайте.
Например, можно сделать окно с информацией о новом адресе страницы и ссылкой на него, чтобы посетители не потерялись.
Это особенно полезно, если вы изменяете URL важных разделов сайта без перенаправлений.
Итоги и рекомендации
Удаление или изменение URL страницы без перенаправления — задача, которую стоит выполнять осознанно. В большинстве случаев лучше использовать редиректы, чтобы сохранить SEO и UX. Однако если вы хотите именно убрать URL без перенаправления, то:
- Изменяйте
post_nameчерезwp_update_postили удаляйте страницу черезwp_delete_post. - Используйте фильтр
template_redirectдля временного отключения URL с выдачей 404. - Обновляйте правила постоянных ссылок после изменений.
- Рассмотрите использование плагинов, например Clearfy Pro и My Popup, для управления ошибками и уведомлениями.
Таким образом, вы сможете гибко управлять URL и страницами WordPress без лишних перенаправлений и сохраняя контроль над поведением сайта.