Я получил этот код, который по какой-то причине не работает полностью, хотя мне кажется, что я на правильном пути, и я догадываюсь, почему он не работает, хотя я не знаю, как исправить.
Идея такова, что если HTTP_REFERER = сеть, содержащая слово example, и вы не вошли в него, перенаправьте вас на mysite.com/login
add_action( 'init', 'example_redirect');
function metorik_redirect() {
if (!is_user_logged_in() && strpos($_SERVER['HTTP_REFERER'], "example")){
wp_redirect( site_url('/login/') );
exit;
}
}
Кажется, что приведенное выше правило срабатывает при возникновении условий встречаются, но затем он возвращает ERR_TOO_MANY_REDIRECTS
Я предполагаю, что он продолжает находить референт в качестве примера каждый раз, когда он проходит через эту функцию, а затем никогда не выходит из нее. Как указано, это всего лишь предположение.
ОБНОВЛЕНИЕ 1: Я пробовал использовать этот другой код, который я нашел здесь stackoverflow, с теми же результатами:
add_action('template_redirect', 'redirect_if_example');
function redirect_if_example(){
if ( !is_user_logged_in() && coming_from_example(wp_get_referer()) ){
wp_safe_redirect( "/login/" );
exit;
} else{
wp_safe_redirect( get_home_url() );
exit;
}
}
function coming_from_example($url_string){
if ($url_string){
$url = parse_url($url_string);
return strpos($url['host'], 'example.com');
} else {
return false;
}
}
Спасибо С уважением