У меня есть шорткод 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() . '
';