2014年9月8日月曜日

【注意!】WP_PLUGIN_URLをそのまま使うと管理画面のみHTTPSにしているサイトでエラーが!!

という事例を見つけて、いろいろ試してみたら気づきました。
たとえば、管理画面のみSSL暗号化(https)にしていた場合、SSL暗号化内ページで、非暗号化データを読むこむ場合、ブラウザによってブロックされるケースがあります。
私が体験したのは、外部JavaScriptやCSSを読み込みをするプラグインについて、管理画面がSSL暗号化しているサイトで動作しない(読み込みをブロックされる)というものでした。



なエラーが出るわけです。

どうやって対処すればいいの?

plugins_url関数を使ってください。

ただそれがなかった場合を想定して
miyauchi氏から「plugins_url関数は、wp_enquque_script 関数同様、WordPress 2.6以降からあるので、関数の有無(function_exists)はいらないよ〜」という有り難いコメントもらいました。ありがとうございます!!

$plugins_url = WP_PLUGIN_URL;
if( function_exists('plugins_url') )

 $plugins_url = plugins_url();


としておいて、WP_PLUGIN_URLのかわりに、$plugins_urlを使うという感じかなと思います。こうすることで、plugins_url関数がない場合には、従来のWP_PLUGIN_URLが使われ、あればplugins_url関数が使われます。

何故、WP_PLUGIN_URLじゃダメなの?

Make WordPress Coreのチケットに書かれている通り、WP_CONTENT_URLやWP_PLUGIN_URLはsiteurl(設定→一般)を読んでいるため、httpかhttpsの調整はされないためってことです。
つまりFORCE_SSL_LOGIN、FORCE_SSL_ADMINなどを使ってhttps通信をさせる場合には、site_url関数(plugins_url関数含む)を使わなきゃならないってことみたいですね。




0 件のコメント:

コメントを投稿