Как автоматически изменять URL записей WordPress по шаблону

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

Зачем автоматически изменять URL записей WordPress

Стандартный URL записи в WordPress обычно строится по шаблону: /post-name/. Но иногда необходимо:

  • Добавить дату публикации в URL — для архивации и SEO.
  • Включить в URL название категории или тега.
  • Добавить уникальные идентификаторы, например, ID записи или метаполе.
  • Изменять URL массово, если изменились требования к структуре сайта.

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

Основные хуки и функции для изменения URL записей

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

  • post_link — фильтр для изменения ссылки на отдельную запись.
  • pre_post_link — фильтр, который позволяет изменить структуру ссылки перед её генерацией.
  • register_post_type — при регистрации типа записи можно задать шаблон URL.

Для изменения URL программно используйте фильтр wplike_post_link, а также можно пересохранять правила пермалинков.

Пример: добавление даты публикации в URL записи

Добавим в URL запись дату в формате /год/месяц/день/название-записи/ с помощью фильтра post_link:

add_filter('post_link', 'wplike_post_link', 10, 3);
function wplike_post_link($permalink, $post, $leavename) {
    if ($post->post_type != 'post') {
        return $permalink;
    }
    $date = get_the_date('Y/m/d', $post);
    $slug = $leavename ? '%postname%' : $post->post_name;
    $new_permalink = home_url("/" . $date . "/" . $slug . "/");
    return $new_permalink;
}

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

Учёт категорий и метаполей в URL

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

add_filter('post_link', 'wplike_post_link_category_meta', 10, 3);
function wplike_post_link_category_meta($permalink, $post, $leavename) {
    if ($post->post_type != 'post') return $permalink;

    $categories = get_the_category($post->ID);
    $category_slug = '';
    if (!empty($categories)) {
        $category_slug = $categories[0]->slug;
    }

    $custom_meta = get_post_meta($post->ID, 'wplike_custom_slug', true);
    $slug_part = $custom_meta ? $custom_meta : ($leavename ? '%postname%' : $post->post_name);

    $new_permalink = home_url("/" . $category_slug . "/" . $slug_part . "/");
    return $new_permalink;
}

Этот пример покажет URL вида /category-slug/custom-slug/ или /category-slug/post-name/ при отсутствии метаполя.

Автоматическое массовое обновление URL записей

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

Пример функции для массового обновления слагов с добавлением префикса:

function wplike_update_all_post_slugs() {
    $args = [
        'post_type' => 'post',
        'posts_per_page' => -1,
        'post_status' => 'publish',
    ];
    $posts = get_posts($args);
    foreach ($posts as $post) {
        $new_slug = 'wplike-' . $post->post_name;
        wp_update_post([
            'ID' => $post->ID,
            'post_name' => $new_slug
        ]);
    }
    flush_rewrite_rules();
}
<

Вызовите эту функцию один раз через админку или WP-CLI. После обновления URL не забудьте проверить, что старые ссылки корректно редиректятся, чтобы избежать потери трафика.

Плагины для удобного управления URL и пермалинками

Иногда проще использовать готовые решения для изменения URL:

  • Clearfy Pro — расширенные настройки SEO, включая гибкое управление URL.
  • ABC Pagination — полезен для правильной пагинации и структуры URL в архивах.
  • Permalink Manager Lite — популярный плагин для точечного изменения URL записей и таксономий.

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

Обработка редиректов при изменении URL

Изменение структуры URL повлечёт за собой, что старые ссылки перестанут работать. Чтобы избежать 404 ошибок и потери SEO, нужно настроить редиректы.

Пример кода для редиректа старых URL на новые с добавлением префикса:

add_action('template_redirect', 'wplike_redirect_old_urls');
function wplike_redirect_old_urls() {
    if (is_singular('post')) {
        global $post;
        $current_slug = $post->post_name;
        if (strpos($current_slug, 'wplike-') !== 0) {
            $new_slug = 'wplike-' . $current_slug;
            wp_redirect(home_url('/' . $new_slug . '/'), 301);
            exit;
        }
    }
}

Этот код проверит, если в URL отсутствует нужный префикс, и сделает редирект на правильный.

Заключение

Автоматическое изменение URL записей WordPress по шаблону — мощный инструмент для оптимизации структуры сайта. Используя фильтры post_link, функции для массового обновления слагов и грамотные редиректы, можно гибко управлять постоянными ссылками без риска сломать сайт. Для удобства и безопасности рекомендуем комбинировать кодовые решения с проверенными плагинами, например, Clearfy Pro.

WooCommerce: как избежать проблем с редкой оплатой и автоматическим отключением заказов
27.04.2026
Как автоматически удалять неактивные комментарии в WordPress
10.03.2026
Автоматическое удаление неактивных пользователей WordPress
25.01.2026
Как создать интерактивный вопросник в WordPress с помощью Quizle
27.12.2025
WooCommerce: как автоматически обновлять статус заказа при возврате платежа
30.05.2026