Как поменять ссылки у записей только определенной рубрики wp?
Есть сайт со страницей записей /blog/ и постоянные ссылки ввида /%postname%/
Как мне сделать так чтобы записи только определенной рубрики (ID=3 slag = /new-rubrik) меняли url на вида site.ru/blog/%postname% сейчас идут сразу site.ru/%postname
Дополнительно:
Ответы:
Можно использовать плагины.
В описании к Permalink Manager Lite эта возможность указана.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Сделать отдельную структуру 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);
Rewrite rule:
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, даже если технически всё открывается.