基于引荐来源的重定向发送 ERR_TOO_MANY_REDIRECTS

我得到的这段代码由于某种原因没有完全正常工作,尽管它似乎在正确的方向上,而且我猜测它为什么不工作,尽管我不知道如何修复。


ide 是这样的,如果 HTTP_REFERER = 一个包含单词示例的网站,而你没有登录它,那么将你重定向到 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


我的猜测是,每次它循环通过该函数时,它都会不断地找到 referer 作为示例,然后它永远不会退出它。如前所述,只是一个猜测。


更新 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;

   }

}

谢谢亲切的问候


四季花海
浏览 79回答 1
1回答

一只萌萌小番薯

尝试在正确的钩子中重定向并使用正确的 strpos 函数,如下所示:(此代码应在您的 functions.php 文件中)add_action( 'template_redirect', 'example_redirect');function example_redirect() {if (!is_user_logged_in() && strpos($_SERVER['HTTP_REFERER'], "example") !== false){        wp_redirect( wp_login_url() );         exit;     }   }另外请确保您实际上来自example其中包含字符串的网站。
打开App,查看更多内容
随时随地看视频慕课网APP