Редирект URL страницы на главную URL без использования плагина
Как мне перенаправить URL страницы http://localhost/wordpress_rnd/?page_id=2 на главный URL http://localhost/wordpress_rnd/ без использования каких-либо плагинов?
Правильный способ сделать это — использовать хук template_redirect, добавив функцию в ваш functions.php:
function redirect_to_home() {
if(!is_admin() && is_page('2')) {
wp_redirect(home_url());
exit();
}
}
add_action('template_redirect', 'redirect_to_home');
можешь сказать, почему мы должны использовать exit после wp_redirect(home_url()); ?
D.JCode
Хороший вопрос, и я не могу сказать точно, но я знаю, что в официальной документации пример использует его, поэтому я тоже использую.
cfx
Найдите файл page.php (предполагая, что вы уже создали его). После строки <?php get_header(); ?> добавьте следующий код:
<?php if(is_page('2')) {
wp_redirect( home_url(), '302' );
} ?>
В приведённом выше коде is_page('2') — это ID вашей страницы, как вы указали в примере.
Это может сработать, но я считаю, что в зависимости от конкретной ситуации лучше делать перенаправление на уровне сервера, например, используя .htaccess, чтобы не выполнялось ни одной строки кода и не тратились ресурсы.
cybmeta
@cybmeta действительно справедливое замечание :) Спасибо, что обратили на это внимание.
cristian.raiber
Еще одно замечание. Используйте ваш код в хуке действия, например init, как предложил @paul в своем ответе, а не в файле шаблона, как вы предлагали. Если вы переключитесь на другую тему, вы потеряете функциональность, поэтому функциональность и внешний вид (тема и файл шаблона) должны быть разделены. Я бы отредактировал ответ, чтобы добавить хук действия.
cybmeta
Это тоже верно. Бывают моменты, когда не думаешь об оптимизации кода, а сосредоточен на том, чтобы быстрее выполнить текущую задачу :) По моему мнению, это был как раз один из таких случаев.
Тем не менее, я очень ценю ваш вклад — он действительно полезен. Каждый день я узнаю здесь что-то новое :)
cristian.raiber
Написание кода в хуке действия выполняется так же быстро, как и в файле шаблона.
cybmeta
WP_REDIRECT — это функция, которую следует использовать для перенаправления в WordPress. Её можно применять следующим образом:
wp_redirect( $location, $status );
exit;
// $location — обязательный параметр. Указывает целевой URL, на который будет перенаправлена страница.
// $status — опциональный параметр. Используется для установки кода состояния. По умолчанию: 302
Эту функцию можно использовать для перенаправления пользователей с одной страницы на другую. Её следует разместить либо в файле functions.php, либо в шаблоне, который используется для отображения текущей страницы. Для вашего случая просто добавьте следующий код в конец файла functions.php:
$redirectFromPageID = 2; // Перенаправление со страницы с ID = 2
$redirectTo = home_url(); // Перенаправление на главную страницу
if( is_page( $redirectFromPageID ) ){
wp_redirect( $redirectTo );
exit;
}