Как изменить URL для страниц WordPress с помощью функции wp_link_ru_change_page_url

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

Почему стандартные возможности WordPress по изменению URL могут не подходить

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

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

В таких случаях помогает написание собственной функции, которая перехватывает запросы и меняет URL на лету.

Как работает изменение URL страниц в WordPress через фильтр page_link

WordPress генерирует ссылки на страницы через функцию get_permalink(), которая в свою очередь использует фильтр page_link. Перехват этого фильтра позволяет изменить URL страницы перед выводом.

Ниже пример функции wp_link_ru_change_page_url, которая заменяет URL страниц с определённым ID на кастомный адрес:

function wp_link_ru_change_page_url($url, $post) {
    // Задаём ID страницы и новый URL
    $pages_to_change = [42 => '/custom-url/', 56 => '/another-url/'];
    if (isset($pages_to_change[$post->ID])) {
        $url = home_url($pages_to_change[$post->ID]);
    }
    return $url;
}
add_filter('page_link', 'wp_link_ru_change_page_url', 10, 2);

В этом примере для страниц с ID 42 и 56 URL будет заменён на указанный в массиве. Это простой способ задать индивидуальные URL без изменения ярлыков.

Пример более гибкой функции для динамического изменения URL страниц

Рассмотрим расширенную версию, которая меняет URL страниц по условию, например, добавляет префикс /promo/ для всех страниц, у которых в метаданных стоит определённый ключ.

function wp_link_ru_dynamic_page_url($url, $post) {
    $promo_flag = get_post_meta($post->ID, '_is_promo_page', true);
    if ($promo_flag) {
        $url = home_url('/promo/' . $post->post_name . '/');
    }
    return $url;
}
add_filter('page_link', 'wp_link_ru_dynamic_page_url', 10, 2);

Чтобы это работало, нужно в админке добавить метаполе _is_promo_page со значением 1 для нужных страниц. Тогда для них URL будет с префиксом /promo/.

Настройка правил перезаписи (Rewrite Rules) для новых URL

После изменения URL важно, чтобы WordPress понимал, как обрабатывать новые адреса. Для этого нужно добавить правила перезаписи в файл functions.php или в плагин:

function wp_link_ru_add_rewrite_rules() {
    add_rewrite_rule('^promo/([^/]+)/?$', 'index.php?pagename=$matches[1]', 'top');
}
add_action('init', 'wp_link_ru_add_rewrite_rules');

После добавления правил необходимо обновить правила перезаписи, зайдя в Настройки → Постоянные ссылки и нажав "Сохранить изменения".

Плагины для управления URL страниц в WordPress

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

  • Permalink Manager Lite — позволяет изменять URL страниц, записей и таксономий прямо в интерфейсе без ограничения.
  • Redirection — удобный инструмент для управления редиректами, чтобы перенаправлять старые адреса на новые.
  • Custom Permalinks — плагин с простым интерфейсом для задания индивидуальных URL.

Эти плагины хорошо подходят для конкретных задач по изменению URL без написания кода.

Практические советы по изменению URL страниц

При изменении URL важно учитывать несколько моментов:

  • Обязательно настройте 301 редиректы со старых адресов, чтобы не потерять позиции в поисковиках и не испортить пользовательский опыт.
  • Проверяйте корректность правил перезаписи, чтобы новые URL корректно обрабатывались WordPress.
  • Если используете кэш или CDN, очищайте кэш после изменения URL.

Пример создания редиректа через функцию:

function wp_link_ru_redirect_old_url() {
    if (strpos($_SERVER['REQUEST_URI'], '/old-url/') === 0) {
        wp_redirect(home_url('/new-url/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wp_link_ru_redirect_old_url');

Этот код перенаправляет пользователей с /old-url/ на /new-url/ с помощью 301 редиректа.

Итоги: как грамотно менять URL страниц в WordPress

Изменение URL страниц в WordPress — задача, которая требует аккуратности и понимания, как работают постоянные ссылки и правила перезаписи. Использование собственного фильтра page_link и добавление rewrite правил позволяет гибко настраивать адреса без плагинов. При этом для большинства задач удобно применять проверенные плагины.

Главное — всегда настраивайте редиректы и проверяйте работоспособность новых URL, чтобы избежать ошибок 404 и ухудшения SEO.

Как использовать хуки в WordPress для расширения функциональности
03.12.2025
Автоматический бэкап WordPress: лучшие плагины и примеры кода
25.11.2025
Как создать собственный шорткод в WordPress
05.11.2025
Как удалить пустую страницу в WordPress с помощью кода
14.01.2026
Как использовать каскадные меню в WordPress: примеры кода и лучшие плагины
27.12.2025