2015-11-03 4 views
-1

Я пытаюсь создать очень простой плагин для переадресации на моих страницах Wordpress, которые обнаруживают, что пользователь вошел в систему или нет. Я могу получить только если заявление работает, но я добавил заявление еще и не уверен, что часть синтаксиса у меня неправильно, что создает фатальную ошибку:Структурирование Wordpress PHP Redirect Plugin

<?php 
/* 
Plugin Name: Three Dot Redirects 
*/ 

add_action('wp_head', 'rhombus_gate_redirect'); 
function rhombus_gate_redirect() { 
    if (is_page('rhombus_gate') && is_user_logged_in()) { 
    wp_redirect (home_url("/constructs/pizza")); 
    } 
    else (is_page('rhombus_gate')) { 
    wp_redirect (home_url("/gate")); 
    } 

} 
+0

Что же такое ошибка? – rnevius

ответ

1

Крюк wp_head действия слишком поздно для перенаправления, поскольку заголовки уже отправлены.

Вместо этого я рекомендую использовать template_redirect hook, который запускается после завершения загрузки WordPress, но перед отправкой любых заголовков. На этом этапе пользователь аутентифицируется, и определяется шаблон страницы.

else также не принимает состояние ... и wp_redirect() должны всегда следовать exit:

add_action('template_redirect', 'rhombus_gate_redirect'); 
function rhombus_gate_redirect() { 
    if (is_page('rhombus_gate')) { 
     $redirect_url = is_user_logged_in() ? home_url("/constructs/pizza") : home_url("/gate"); 
     wp_redirect ($redirect_url); 
     exit; 
    } 
}