SWELLを使っていると、なぜかサイトが表示できなくなることがあります。
サイトを開くとこんなメッセージが出てサイトが見れなくなります。
お使いのブラウザーは安全ではありません!
ご利用中の Internet Explorer はとても古いブラウザです。
当サイトをIEで閲覧することはできません。
‘Edgeもしくはその他のモダンブラウザ(Google Chrome など)をご利用ください。
最悪なのはこのメッセージが訪問者が閉じられないことです。
もちろんIEを使ってなどいません。
この警告メッセージは、Chromeが出しているのではなくSWELLが出しているメッセージです。
SWELLの「IEでアクセスされた時の警告表示」を停止する
SWELLがIE非対応であるために、テーマ有効化しただけの初期状態から「IEでアクセスされた時の警告表示」する機能がONになっています。
その機能をOFFにする『「IEでアクセスされた時の警告表示」を停止する』という設定がありますので、その機能を有効化すれば、SWELLのIE警告を止めることができます。

SWELLはなぜIEと誤判定するのか?
結論から言えば、SWELLはWordPressが用意しているグローバル変数($is_IE
)の値を見て判定しているだけで、SWELLが独自にIEかどうかを判定していません。
つまり、SWELLが誤判定しているのではなく、$is_IE
が何らかの原因で間違った値になってしまっているということです。
IEかどうかを判定してメッセージ表示するコード
SWELLがIEかどうかを判定してメッセージ表示するコードは以下の2つです。
/**
* IEに警告を出す
*/
global $is_IE;
if ( $is_IE ) {
add_action( 'admin_footer', __NAMESPACE__ . '\show_ie_alert', 20 );
add_action( 'wp_footer', __NAMESPACE__ . '\show_ie_alert', 20 );
function show_ie_alert() {
if ( SWELL::get_option( 'remove_ie_alert' ) ) return;
swl_parts__ie_alert();
}
}
/**
* IEアラート
*/
if ( ! function_exists( 'swl_parts__ie_alert' ) ) :
function swl_parts__ie_alert() {
?>
<style>
.ie-alertbox {
position: fixed;
right: 0;
bottom: 0;
z-index: 9999;
display:-ms-flexbox;
display: flex;
-ms-flex-pack: center;
justify-content: center;
-ms-flex-align: center;
align-items: center;
box-sizing: border-box;
width: 100%;
max-width: 100%;
height: 100%;
max-height: 100%;
padding: 2em;
background: rgba(0, 0, 0, .7);
}
.__inner {
position: relative;
z-index: 1;
display:-ms-flexbox;
display: flex;
-ms-flex-direction: row;
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
width: 100%;
max-width: 1000px;
height: 100%;
max-height: 600px;
text-align: center;
background: rgba(185, 43, 0, .5);
color: #fff;
font-family: Meiryo, sans-serif;
line-height: 1.6;
font-size: 16px;
box-sizing: border-box;
}
.ie-alertbox .__text a {
text-decoration: underline;
color: #87ceff;
}
</style>
<div class="ie-alertbox">
<div class="__inner">
<div class="__title u-mb-10 u-fz-xl">
<b class="icon-alert"><?=esc_html__( 'お使いのブラウザーは安全ではありません!', 'swell' )?></b>
</div>
<div class="__text">
<?=esc_html__( 'ご利用中の <b>Internet Explorer</b> はとても古いブラウザです。', 'swell' )?>
<br><?=esc_html__( '当サイトをIEで閲覧することはできません。', 'swell' )?>
<br><br>
<?=__( '開発元のMicrosoftも<a href="https://www.microsoft.com/ja-jp/edge">Microsoft Edge</a>への移行を強く推奨しており、', 'swell' )?><br>
<?=esc_html__( '2022年 6月 には正式にサポートが終了します。', 'swell' )?>
<br><br>
<?=__( 'Edgeもしくはその他のモダンブラウザ(<a href="https://www.google.co.jp/chrome/index.html">Google Chrome</a> など)をご利用ください。', 'swell' )?>
</div>
</div>
</div>
<?php
}
endif;
なぜ$is_IEが誤判定するのか?
グローバル変数$is_IEが間違った値になるのは、SWELLが原因ではないでしょう。
おそらく、サイトの静的ページキャッシュプラグインとの相性の問題だと思います。
管理者としてログインしている間はキャッシュがバイパスされるので気が付かない場合もあるので、気が付くまで時間がかかるケースもあり、注意が必要です。
$is_IEの誤判定対策は?
キャッシュプラグインをOFFにするか、SWELLのIE警告機能をOFFにするかどちらかの対応になると思います。
IE警告機能を生かしてキャッシュプラグインをOFFにするようなチョイスは非合理的なので、通常はSWELLの機能をOFFする対応でよいと思います。
まとめ
SWELLが実装しているIE利用者に警告を出す機能は、正直あまり意味がないと思います。
IEを使っている人は『IEしか使えないからIEを使ってる』わけなので、IE以外を使わないとサイトを表示しない、警告を消せない、というのはあまりにも乱暴な対応と言わざる負えません。
SWELLがIEへの対応をしていないのは当然として、その免罪符としてIEに対して警告を必ず出す必要も無いと思います。
SIMPLE SEO PACKでもSEOと関係ない機能が初期状態でONになっていて、原因が分かるのに苦労した記憶がありますので、良かれと思って追加した機能が混乱を招いている気がします。
コメント