PHP не всегда получает значение от $ _GET - PullRequest
0 голосов
/ 14 июля 2020

У меня есть шорткод Wordpress, который отображает соответствующее изображение на основе некоторых значений, переданных через строку запроса. Он получает значение с $_GET['utm_content'].

Не уверен, почему это может быть браузер, но ... он работает, как ожидалось, 100% времени в режиме без инкогнито Chrome. При использовании Chrome в режиме инкогнито, Firefox и Safari он получает значение только в процентах времени. Когда он не получает, это isset($_GET['utm_content']) терпит неудачу ....

Вот и вся функция. Вы можете увидеть мой код отладки в конце.

add_shortcode('bene_show_img', 'bene_show_img');
function bene_show_img( $atts, $content = null ) {
        $utm_campaign = isset($_GET['utm_campaign']) ? $_GET['utm_campaign'] : 'not set';
        $utm_content = isset($_GET['utm_content']) ? $_GET['utm_content'] : 'not set';

        extract( shortcode_atts( array(
                'base_path' => 'wp-content/uploads',
                'img_path' => substr( substr_replace( substr($utm_campaign, 0, 8) , '/', 4, 0 ), 0, 7 ),
                'img_base_name' => substr($utm_campaign, 8),
                'img_ver' => $utm_content,
                'img_ext' => 'png'
        ), $atts ) ); 

        $bp = esc_attr($base_path);
        $p = esc_attr($img_path);
        $bn = esc_attr($img_base_name);
        $v = esc_attr($img_ver);
        $e = esc_attr($img_ext) . '?r=' . rand();

        // TODO: if the final path does not point to an image, try decreasing then increasing the 
        // month by 1... 


        

        // Return a string to display on the page
        $tag = <<<EOD
                <img width="1024" height="535" src="/$bp/$p/$bn-$v-1024x538.$e" 
                class="attachment-large size-large" alt="" 
                srcset="/$bp/$p/$bn-$v-1024x538.$e 1024w, 
                /$bp/$p/$bn-$v-300x175.$e 300w, 
                /$bp/$p/$bn-$v-768x401.$e 768w, 
                /$bp/$p/$bn-$v.$e 1200w" 
                sizes="(max-width: 1024px) 100vw, 1024px"> 
        EOD;

        return "<h2>XX $utm_content $utm_campaign XX</h2>" . $tag;
        //return $tag;
}

Что мне не хватает?

Если моя ошибка не слишком заметна, вы можете увидеть ее поведение в режиме реального времени по адресу: http://wordpress-310389-952347.cloudwaysapps.com/20200709-1/?utm_campaign=20200709page&utm_content=1a



ОБНОВЛЕНИЕ

Чтобы убедиться, что это не какой-то странный шорткод, я добавил в functions. php и получить согласованные результаты при просмотре URL-адреса выше

<code>add_shortcode('getit', 'getit');
function getit() {
    return $_GET['utm_content'];
}

echo '<pre>' . do_shortcode('[getit]') . '
'; эхо '
' . getit() . '
';
...