Иногда бывает нужно сделать редиректы в самом WordPress. Для этого существует функция wp_redirect, которая используется следующим образом:
1 |
wp_redirect( 'http://www.example.com/page.html', 301 ); |
Первым аргументом функции указывается куда производиться редирект, а второй - статус код.
Функция очень полезная, но если у вас используется кеширующий плагин и эту функцию просто вставить в код темы, то плагин закеширует эти данные, и в итоге всё-равно получится страница с кодом 200, а не 301-ым редиректом. Тут нам поможет хук template_redirect:
1 |
add_action( 'template_redirect', 'my_redirect', 1 ); |
Здесь вызывается наша функция my_redirect перед тем, как будет загружен шаблон сайта. Последнее число в примере обозначает приоритет выполнения, чем выше число, тем позже выполнится функция. Теперь осталось написать функцию my_redirect, которая будет отвечать за условия редиректа и вставить это всё в function.php нашей темы. Ниже я приведу пример:
1 2 3 4 5 6 7 8 9 10 |
function my_redirect(){ global $post; if(is_single()){ $post_url=get_permalink($post->ID); if($post_url!='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']){ wp_redirect($post_url, 301 ); exit; } } } add_action( 'template_redirect', 'my_redirect', 9); |
В данном примере я делаю редирект с неправильного URL-а поста на правильный, это бывает необходимо в том случае, если по какой-либо причине у вас где-нибудь просочился не верный URL. Например ссылка "www.example.com/my_category/post.html/123" будет открываться так же, как и "www.example.com/post.html", что не очень хорошо, особенно для поисковиков, ведь по сути это дубль. Таким образом можно задать автоматические условия для перенаправления на правильные URL-ы.