Как установить значение cook ie при загрузке страницы с помощью PHP до того, как оно будет извлечено в части шаблона WordPress? - PullRequest
0 голосов
/ 07 мая 2020

Я хотел бы установить повар ie один раз в functions. php или header. php со значением, зависящим от того, найдена ли строка в URL-адресе. Вот мой код для этого, в настоящее время в моих функциях. php файл:

add_action('init', 'set_region_cookie', 1);
function set_region_cookie() {

    if( is_admin() ) {
        return;
    }

    $url_string = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    $six_months_from_now = time()+60*60*24*180;
    // If user is loading the UK English version of the site, set the region cookie to gb, else set to us
    if ( strpos($url_string,'en_gb') !== false ) {
        setcookie('region', 'gb', $six_months_from_now, '/' );
    } else {
        setcookie('region', 'us', $six_months_from_now, '/' );
    }
}

Однако я заметил, что если я загружаю страницу со следующим кодом внутри части шаблона, я не получаю сообщений, которые я ожидал на основе значения cook ie, пока я не обновлю sh страницу снова:

    $product_posts_args = [
    'post_type'   => 'product',
    'numberposts' => -1,
    'tax_query'   => [
        'relation' => 'AND',
        [
            'taxonomy' => 'market_sector',
            'field'    => 'slug',
            'terms'    => [ $market_sector ]
        ],
        [
            'taxonomy' => 'region',
            'field'    => 'slug',
            'terms'    => [ $_COOKIE['region'] ]
        ],
    ],
    'orderby'     => 'menu_order',
    'order'       => 'ASC',
];

$products = get_posts( $product_posts_args );

$_COOKIE['region'] дает мне последнее значение cook ie, а не то, что должно быть обновление до в моих функциях. php и то, что я вижу в инструментах разработчика Chrome.

Как я могу установить повар ie до того, как он будет получен в моей части шаблона в $product_posts_args?

...