[WordPress]Header CleanerがHTTPSページでJSエラーを吐く場合の対処法

WordPressでHeader Cleanerという高速化プラグインを使ってみたところ、HTTPSのページでJavascriptがエラーになるという現象に遭遇しました。

Google ChromeのJavaScriptコンソールで見てみると下記のようなエラーが。
[blocked] The page at https://example.com/index.html
 ran insecure content from
 http://example.com/wp-content/plugins/head-cleaner/js_css.php?f=0fcde62d5a68a5101f4eb9afde09c441&t=js.
 index.html:1
Uncaught ReferenceError: $ is not defined common.js:2
Uncaught ReferenceError: jQuery is not defined jquery.form.js:12
Uncaught ReferenceError: jQuery is not defined scripts.js:227
Uncaught ReferenceError: $ is not defined ownScript.js:1
これは明らかにJSファイルの読み込みに失敗していますね。
よく見てみると、HTTPSなページの中でこのファイルだけがHTTPアクセスになっていました。
<script src="http://example.com/wp-content/plugins/head-cleaner/js_css.php?f=0fcde62d5a68a5101f4eb9afde09c441&amp;t=js" ></script>
うむむ・・URLが絶対パス指定になっている。。。
これは恐らくプラグインのバグと思われます。
プラグインのソースコードを直接いじって修正してもいいのですが、それだとアップグレードしたときに元に戻ってしまうのでどうしたものか。
ていうかそもそも"js_css.php"って何なの?作った覚えないんだけど・・・。

試行錯誤してみたところ、どうやらHead Cleaner設定の「CSS, JS を動的生成する」オプションがこの"js_css.php"ファイルを生成していることがわかりました。

そもそも何の役に立つオプションなのかイマイチよくわからなかったので、これを外してみたところ解決しました。

結論

HTTPSを使うサイトでは、Head Cleanerの「CSS, JS を動的生成する」オプションは使うな。
カテゴリ:

人気記事