ERR TOO MANY REDIRECTS - При перенаправлении пользователя в зависимости от выбранного города. - PullRequest
0 голосов
/ 14 июля 2020

Итак, у меня есть раскрывающийся список, который изменяет значение настраиваемого поля в профиле пользователя в зависимости от выбранного города. Если пользователь выбирает, например, «Детройт», Детройт затем сохраняется в его профиле, и эти данные затем используются для перенаправления клиента на основе его выбора.

Проблема, с которой я сталкиваюсь, похоже, связана с тем, что клиент выбирает НОВЫЙ другой город на домашней странице или на странице глубже в каталоге, где они встречаются, с помощью СЛИШКОМ МНОГО ПЕРЕНАПРАВЛЕНИЙ l oop.

Я понимаю, ПОЧЕМУ, я просто не вижу, где мой проблемы, которые вызывают это.

Любая помощь приветствуется. Даже если есть более простой и понятный способ sh этого добиться.

add_action('wp_footer' , 'city_redirects');
function city_redirects() {
        global $current_user;
        global $wp;
        $current_url = home_url( add_query_arg( array(), $wp->request ) );
        wp_get_current_user(); // wordpress global variable to fetch logged in user info
        $userID = $current_user->ID; // logged in user's ID
        $metalocation_display = get_user_meta($userID, 'location_select', true); // stores the value of logged in user's meta data for 'test'.
        $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

    //chicago REDIRECTS
    if ( is_user_logged_in() && $metalocation_display == 'chicago' && strpos($url,'chicago') == false) {
        header('Location: example.com/chicago/' . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && $metalocation_display !== 'chicago' && strpos($url,'chicago') == true) {
        header('Location: example.com/' . str_replace('chicago', '', 'example.com/chicago') . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && is_front_page() && $metalocation_display !== 'chicago' && strpos($url,'chicago') == true) {
        header('Location: example.com/');
        }
    //detroit REDIRECTS
    if ( is_user_logged_in() && $metalocation_display == 'detroit' && strpos($url,'detroit') == false) {
        header('Location: example.com/detroit/' . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && $metalocation_display !== 'detroit' && strpos($url,'detroit') == true) {
        header('Location: example.com/' . str_replace('detroit', '', 'example.com/detroit') . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && is_front_page() && $metalocation_display !== 'detroit' && strpos($url,'detroit') == true) {
        header('Location: example.com/');
        }
    //philadelphia REDIRECTS
    if ( is_user_logged_in() && $metalocation_display == 'philadelphia' && strpos($url,'philadelphia') == false) {
        header('Location: example.com/philadelphia/' . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && $metalocation_display !== 'philadelphia' && strpos($url,'philadelphia') == true) {
        header('Location: example.com/' . str_replace('philadelphia', '', 'example.com/philadelphia') . $_SERVER['REQUEST_URI']);
        }
    if ( is_user_logged_in() && is_front_page() && $metalocation_display !== 'philadelphia' && strpos($url,'philadelphia') == true) {
        header('Location: example.com/');
        }
}
...