Я пытаюсь определить страницу пользователя и затем перенаправить на основе этого, просто для целей тестирования, так как я хочу проверить роль пользователя, и если они будут определенной роли, они будут перенаправлены со страницы. В любом случае следующий код не работает, несмотря на исследования, проб и ошибок:
function wpse12535_redirect_sample() {
if(is_page_template('list-projects.php')) {
wp_redirect('http://url.com.au/profile');
}
}
add_action( 'init', 'wpse12535_redirect_sample' );
Добавьте выход в конец вашего wp_redirect:
function wpse12535_redirect_sample() {
if(is_page_template('list-projects.php')) {
wp_redirect('http://url.com.au/profile');
exit;
}
}
add_action( 'init', 'wpse12535_redirect_sample' );
Увидеть https://developer.wordpress.org/reference/functions/wp_redirect/#description
Примечание: wp_redirect () не завершается автоматически и почти всегда должен сопровождаться вызовом для выхода;
Редактировать: ответ Раунака правильный, вам нужно изменить хук с действиями init на wp или template_redirect:
НОТА
- Вы должны добавить
exit()
или жеdie()
послеwp_redirect()
;- использование
wp
вместоinit
, Это гарантирует, что шаблон уже загружен.- Если файл шаблона находится в подкаталоге, вы должны проверить с этой частью. Пример:
/wp-content/themes/my_active_theme/page-templates/list-projects.php
,
тогда вы должны проверитьpage-templates/list-projects.php
Вот код, который будет работать для вас:
function wh_redirect_sample()
{
if (basename(get_page_template()) == 'list-projects.php')
{
wp_redirect('http://url.com.au/profile');
exit(); //always remember to add this after wp_redirect()
}
}
add_action('wp', 'wh_redirect_sample');
Альтернативный метод:
function wh_redirect_sample()
{
//if list-projects.php is under sub directory say /wp-content/themes/my_active_theme/page-templates/list-projects.php
if (is_page_template('page-templates/list-projects.php'))
{
wp_redirect('http://url.com.au/profile');
exit();
}
//if list-projects.php is under active theme directory say /wp-content/themes/my_active_theme/list-projects.php
if (is_page_template('list-projects.php'))
{
wp_redirect('http://url.com.au/profile');
exit();
}
}
add_action('wp', 'wh_redirect_sample');
Код помещается в файл function.php вашей активной дочерней темы (или темы). Или также в любом файле плагина php.
Код протестирован и работает.
Надеюсь это поможет!