Редирект URL страницы на главную URL без использования плагина

14 мар. 2015 г., 06:58:35
Просмотры: 68.3K
Голосов: 14

Как мне перенаправить URL страницы http://localhost/wordpress_rnd/?page_id=2 на главный URL http://localhost/wordpress_rnd/ без использования каких-либо плагинов?

0
Все ответы на вопрос 4
2
22

Правильный способ сделать это — использовать хук 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');
15 мар. 2015 г. 03:39:20
Комментарии

можешь сказать, почему мы должны использовать exit после wp_redirect(home_url()); ?

D.JCode D.JCode
5 янв. 2021 г. 18:22:37

Хороший вопрос, и я не могу сказать точно, но я знаю, что в официальной документации пример использует его, поэтому я тоже использую.

cfx cfx
5 янв. 2021 г. 22:42:28
0
add_action( 'init', function() {
    if ( 0 === stripos( $_SERVER['REQUEST_URI'], '/page_id=2' ) ) {

       wp_redirect( home_url(), 301 );
       exit;

    }
}

Поместите этот код в mu-plugin или в файл functions.php вашей темы

14 мар. 2015 г. 11:31:35
6
-1

Найдите файл page.php (предполагая, что вы уже создали его). После строки <?php get_header(); ?> добавьте следующий код:

<?php if(is_page('2')) {
    wp_redirect( home_url(), '302' ); 
} ?>

В приведённом выше коде is_page('2') — это ID вашей страницы, как вы указали в примере.

14 мар. 2015 г. 10:01:02
Комментарии

Это может сработать, но я считаю, что в зависимости от конкретной ситуации лучше делать перенаправление на уровне сервера, например, используя .htaccess, чтобы не выполнялось ни одной строки кода и не тратились ресурсы.

cybmeta cybmeta
14 мар. 2015 г. 11:09:20

@cybmeta действительно справедливое замечание :) Спасибо, что обратили на это внимание.

cristian.raiber cristian.raiber
14 мар. 2015 г. 13:38:54

Еще одно замечание. Используйте ваш код в хуке действия, например init, как предложил @paul в своем ответе, а не в файле шаблона, как вы предлагали. Если вы переключитесь на другую тему, вы потеряете функциональность, поэтому функциональность и внешний вид (тема и файл шаблона) должны быть разделены. Я бы отредактировал ответ, чтобы добавить хук действия.

cybmeta cybmeta
14 мар. 2015 г. 13:53:14

Это тоже верно. Бывают моменты, когда не думаешь об оптимизации кода, а сосредоточен на том, чтобы быстрее выполнить текущую задачу :) По моему мнению, это был как раз один из таких случаев.

Тем не менее, я очень ценю ваш вклад — он действительно полезен. Каждый день я узнаю здесь что-то новое :)

cristian.raiber cristian.raiber
14 мар. 2015 г. 16:36:38

Написание кода в хуке действия выполняется так же быстро, как и в файле шаблона.

cybmeta cybmeta
14 мар. 2015 г. 16:39:27

Я говорил и о решениях тоже. Иногда нужно просто быстро сообразить и выполнить срочную задачу, а иногда — оптимизировать кусок кода. Тем не менее, с моей точки зрения, плохого кода не бывает.

cristian.raiber cristian.raiber
14 мар. 2015 г. 19:45:58
Показать остальные 1 комментариев
0
-1

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;
}
14 мар. 2015 г. 13:12:20