教文館の社内ナレッジベースです。

→ 

WordPressの常時SSL化をしました。Firefoxで緑の鍵マークが付いたので安心していたところ、鍵をクリックすると

「このページの一部が安全でないためFirefoxがブロックしました。」

と怒られました。「?画像はすべて”https://~”になっているはずなのに・・・?」と思いましたが、ぐぐってみると「ページ内に『http://』で始まるコード(HTTP通信部分)が残っているケースが有る」とのこと。強引にSSLをかぶせている状態なので当たり前といえば当たり前。

マルチサイト運用なので、ネットワーク管理者のダッシュボードを調べてみると情報タブの「サイトアドレス (URL)」では「https://」でしたが、設定タブの「Siteurl」は「http://」のまま。データベースを修正するのが一番いい方法のようです。

DBの取扱はバックアップと慎重な取扱に尽きます。

が、PHP関数には

「ob_get_clean」と「str_replace」という便利な関数がありこれを利用します。

「ob_get_clean();」・・・現在のバッファの内容を取得し、出力バッファを削除する

「str_replace(‘a’,’b’,$wp_head_contents);」 —$wp_head_contentsについて検索文字列(a)に一致したすべての文字列を(b)に置換する

<?php
/* 出力結果で「http://」で始まる部分を「https://」に変換するようにテーマを修正2018.4.19*/
ob_start();
wp_head();
$wp_head_contents = ob_get_clean();
$wp_head_contents = str_replace('http://', 'https://', $wp_head_contents);
echo($wp_head_contents); ?>

なんだかデータベース上のSQL構文みたいですが、もともとのPC言語の思考は似ていてあたりまえなのかも。

以上PHPレベルでの書き換えをして解決とします。

追補

WordPress上のSSL化についての問題だけだと、「Search Regex」プラグインを使う手もあるようです。

参考URL:

【WordPress】SSL化後に表示されなくなった画像をSearch Regexで再表示させよう