Как поменять ссылки у записей только определенной рубрики wp?

Ссылка скопирована
1 ответ

Есть сайт со страницей записей /blog/ и постоянные ссылки ввида /%postname%/
Как мне сделать так чтобы записи только определенной рубрики (ID=3 slag = /new-rubrik) меняли url на вида site.ru/blog/%postname% сейчас идут сразу site.ru/%postname

Дополнительно:

Ответы:

Можно использовать плагины.

В описании к Permalink Manager Lite эта возможность указана.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Сделать отдельную структуру URL только для записей одной рубрики можно, но это уже работа с permalink rules и риском конфликтов. Самый безопасный вариант — использовать плагин вроде Permalink Manager Lite/Pro. Если делать кодом, нужно менять ссылку через post_link и добавить rewrite rule для входящих URL.

Пример: для записей рубрики ID 3 ссылка должна быть /blog/postname/, а остальные записи остаются /postname/.

add_filter('post_link', function ($permalink, $post) {
    if ($post->post_type !== 'post') {
        return $permalink;
    }
 
    if (has_category(3, $post)) {
        return home_url('/blog/' . $post->post_name . '/');
    }
 
    return $permalink;
}, 10, 2);

add_filter('post_link', function ($permalink, $post) { if ($post->post_type !== 'post') { return $permalink; } if (has_category(3, $post)) { return home_url('/blog/' . $post->post_name . '/'); } return $permalink; }, 10, 2);

Rewrite rule:

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

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

После добавления правила нужно один раз пересохранить постоянные ссылки в админке. Не вызывайте flush_rewrite_rules() на каждом запросе.

Но есть нюанс: если существует страница /blog/, архив, CPT или другая структура с таким же префиксом, могут быть конфликты. Также старые URL /postname/ для этих записей желательно редиректить на новые, иначе появятся дубли.

Поэтому для продакшена я бы сначала сделал карту URL и проверил, нет ли пересечений. Если сайт уже индексируется, обязательно добавьте 301 со старых адресов на новые. Без этого изменение permalink может ухудшить SEO, даже если технически всё открывается.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно