Есть сайт на Wordpress, у которого сейчас такая структура ссылок для записей:
site.ru
/%postname%-%post_id%/
Хочу заменить ее на site.ru
/%postname%/
Записей довольно много, поэтому руками делать редиректы со старых URL на новые неудобно.
Есть ли подходящая функция, чтобы настроить 301 редирект автоматом для всех страниц?
Upd.
Нашел плагин, который умеет редиректить
/%postname%/%post_id%/ на
/%postname%/. Почти то, что мне надо, там "/", а в моем случае "-".
Выдрал из кода этого плагина функцию. Там регулярка, я в них плохо разбираюсь, не могу понять где именно надо слеш заменить на дефис. Вот как он выглядит:
function wp_redirect_permalink()
{
//acquire the complete url of the current page the user is on
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//the preg_match will check for any pages having a number after the main link except for pages/ one as it's navigation
if (preg_match("/.+?\/page\/(*SKIP)(*F)|(.+?\/)\d+\/(.*)/i", $actual_link, $matches)) {
$new_redirect_link = $matches[1].$matches[2];
wp_redirect( $new_redirect_link, 301 ); exit;
}
}
add_action( 'template_redirect', 'wp_redirect_permalink' );