Как изменить URL адреса постов в WordPress без использования стандартных пермалинков

В стандартной установке WordPress URL адреса постов формируются на основе настроек постоянных ссылок (Permalinks). Однако бывают ситуации, когда нужно изменить URL адреса постов без использования стандартной системы пермалинков. Например, для интеграции с внешними системами, сохранения совместимости со старыми адресами или создания более удобных ссылок для пользователей.

Почему стандартные пермалинки могут не подходить

Стандартные пермалинки в WordPress хорошо подходят для большинства сайтов, но иногда возникают задачи, которые они не решают:

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

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

Использование фильтра post_link для изменения URL постов

В WordPress есть фильтр post_link, который позволяет изменять URL поста перед выводом. Именно он поможет нам изменить адреса без изменения настроек пермалинков.

Пример функции, которая изменяет URL поста, добавляя к нему префикс /custom/:

function wpdo_custom_post_link( $permalink, $post ) {
    if ( $post->post_type == 'post' ) {
        $permalink = home_url( '/custom/' . $post->ID );
    }
    return $permalink;
}
add_filter( 'post_link', 'wpdo_custom_post_link', 10, 2 );

В этом примере для всех стандартных постов URL будет выглядеть так: https://example.com/custom/123, где 123 — ID поста.

Обработка новых URL запросов

Чтобы такие URL работали, нужно научить WordPress правильно обрабатывать их запросы. Для этого добавим правило перезаписи (rewrite rule):

function wpdo_custom_rewrite_rules() {
    add_rewrite_rule('^custom/([0-9]+)/?$', 'index.php?p=$matches[1]', 'top');
}
add_action( 'init', 'wpdo_custom_rewrite_rules' );

После добавления этого кода необходимо обновить правила перезаписи, перейдя в админке WordPress в меню Настройки > Постоянные ссылки и просто сохранить изменения без правок.

Пример расширения: добавление параметра для различных типов постов

Если на сайте несколько типов постов, и нужно менять URL по-разному, можно расширить функцию:

function wpdo_custom_post_link_full( $permalink, $post ) {
    if ( $post->post_type == 'post' ) {
        $permalink = home_url( '/custom-post/' . $post->post_name );
    } elseif ( $post->post_type == 'product' ) {
        $permalink = home_url( '/shop-item/' . $post->post_name );
    }
    return $permalink;
}
add_filter( 'post_link', 'wpdo_custom_post_link_full', 10, 2 );

function wpdo_custom_rewrite_rules_full() {
    add_rewrite_rule('^custom-post/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=post', 'top');
    add_rewrite_rule('^shop-item/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=product', 'top');
}
add_action( 'init', 'wpdo_custom_rewrite_rules_full' );

Обратите внимание, что для правильной работы этих правил важно, чтобы слаг (post_name) был уникальным.

Использование плагинов для управления URL без пермалинков

Если не хотите писать код вручную, можно воспользоваться специализированными плагинами. Например:

  • Clearfy Pro — предлагает гибкие настройки URL и оптимизацию пермалинков.
  • WPRemark — расширяет возможности работы с комментариями и URL.

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

Как избежать ошибок и потери SEO при изменении URL

Важно помнить, что изменение URL может привести к потерям трафика, если старые адреса уже индексированы поисковиками или используются в ссылках. Чтобы избежать проблем:

  • Настройте 301 редиректы со старых URL на новые — это можно сделать через файл .htaccess или с помощью плагинов, например Clearfy Pro.
  • Проверьте корректность новых URL, чтобы не было дублирования или битых ссылок.
  • Оповестите поисковые системы через Google Search Console о смене структуры URL.

Выводы и рекомендации

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

WooCommerce: отладка проблем с оплатой через Stripe после обновления
24.05.2026
Как удалить версию WordPress из HTML и REST API для повышения безопасности
11.04.2026
Как удалить пагинацию в WordPress без плагинов
21.03.2026
Как использовать REST API для создания приложений на WordPress
09.12.2025
Как добавить поле телефона в регистрацию WordPress с валидацией
15.01.2026