Полный код:
// перезаписываем ссылки
add_filter('term_link', 'sm_term_links', 10, 3);
function sm_term_links($url, $term, $taxonomy){
$replace = $term->slug;
/* нужно указать ID и новый ярлык */
if ($term->term_id == 7)
$replace = 'term_new';
$url = str_replace($term->slug, $replace, $url);
return $url;
}
// перезаписываем основной запрос
add_filter('request', 'sm_request', 9999, 1);
function sm_request($query){
$url_zapros = urldecode($_SERVER['REQUEST_URI']);
if ($url_zapros == '/tax/term_new/')
$query['tax_name'] = 'term_old';
return $query;
}
// ставим 301 редирект со старых ссылок на новые
add_action('template_redirect', 'sm_301_redirect');
function sm_301_redirect() {
/* старые=>новые ссылки */
$rules = array(
array('old'=>'/tax/term_old/','new'=>'/tax/term_new/') // рубрика
);
foreach ($rules as $rule) :
// если URL совпадает с одним из указанных в массиве, то редиректим
if (urldecode($_SERVER['REQUEST_URI']) == $rule['old']) :
wp_redirect(site_url($rule['new']), 301);
exit();
endif;
endforeach;
}
P,S,
Вопрос больше не актуален. Решил задачу другим методом.