Постоянные ссылки и редирект
Я поменял постоянную ссылку с
/%category%/%postname%/ на /%category%/%postname%-%post_id%/
Теперь не могу правильно настроить редирект.
Нашел и немного изменил функцию под свою ситуацию, но есть проблема. Функция срабатывает даже на главной странице и редиректит на первую запись на главной.
Мне нужно, чтобы функция срабатывала только при внешнем переходе по старой ссылке. А может сделать какую-нибудь дополнительную проверку, чтобы функция лишний раз не срабатывала.
Какие есть мысли?
function rudr_post_permalink( $url ){
$request_uri = urldecode($_SERVER['REQUEST_URI']);
$the_slug = basename(parse_url($request_uri, PHP_URL_PATH));
$args = array(
'name' => $the_slug,
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => 1
);
$my_posts = get_posts($args);
if( $my_posts ) :
$post_url = get_post_permalink($my_posts[0]->ID);
wp_redirect($post_url, 301);
die();
endif;
}
add_filter( 'template_redirect', 'rudr_post_permalink');
Ответы (1 шт):
Автор решения: W1ns
→ Ссылка
Если вдруг кому будет нужно, сделал так.
function rudr_post_permalink($url)
{
$request_uri = urldecode($_SERVER['REQUEST_URI']);
$the_slug = basename(parse_url($request_uri, PHP_URL_PATH));
if ($the_slug)
{
$args = array(
'name' => $the_slug,
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => 1
);
$my_posts = get_posts($args);
if ($my_posts):
$post_url = get_post_permalink($my_posts[0]->ID);
wp_redirect($post_url, 301);
die();
endif;
}
}
add_filter('template_redirect', 'rudr_post_permalink');