pre_get_posts не работает должным образом на страницах - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь добавить фильтр в циклы WordPress, используя действие pre_get_posts, которое отлично работает на архивах, но все страницы возвращают ошибку 404. это код в функциях. php:

function add_city_condition_to_main_query($query)
{
    if (!is_admin() && $query->is_main_query()) {
        if ($query->is_archive || $query->is_page) {
            if (get_current_city_id() && get_post_status(get_current_city_id())) {

                $meta_query = [[
                    'key' => 'city',
                    'value' => get_current_city_id(),
                    'compare' => '='
                ]];
                $query->set('meta_query', $meta_query);
            }
        }
    }
}

add_action('pre_get_posts', 'add_city_condition_to_main_query');
function get_current_city_id() { 
    if (isset($_COOKIE['city'])) { 
        $city = $_COOKIE['city']; 
            if ($city == 'all') return 0; 
            if (get_post_status($city) && get_post_type($city) == 'city') { 
                 $translations = pll_get_post_translations($city); 
                 if ($translations[pll_current_language()]) return $translations[pll_current_language()]; 
                 return $city; 
             } else return false; 
     } else return false; 
 }

в чем проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...