WordPressプラグイン「Advanced Custom Fields」(以降ACF)は問題なく利用できていたのですが、SSL(HTTPS)に切り替えたところ、WordPressの管理ページでACFのボタンなどが動作しなかったためその時の対処方法を記述しておきます。
原因としてはACFがSSLに対応しておらず、ヘッダー部分のインクルードファイルがすべて「http://」のままになっているのが原因です。
※HTTPSからHTTPへの参照はセキュリティが低下するため、ブロックされます。
一応、HTTPをHTTPSに遷移させるリダイレクト処理でも問題なく動作はするのですが、ソースを見た場合にHTTPが混ざっているのはあまりキレイではなかったため、コード側で対応してみました。
対応方法
ACFのプラグイン編集から、以下のようにコードの修正をします。
「advanced-custom-fields/acf.php」内
function __construct() ・・・ // vars $this->settings = array( 'path' => apply_filters('acf/helpers/get_path', __FILE__), 'dir' => apply_filters('acf/helpers/get_dir', __FILE__), 'hook' => basename( dirname( __FILE__ ) ) . '/' . basename( __FILE__ ), 'version' => '4.4.11', 'upgrade_version' => '3.4.1', 'include_3rd_party' => false ); // set text domain load_textdomain('acf', $this->settings['path'] . 'lang/acf-' . get_locale() . '.mo');
といった記述があります。
そのあとに
//http to https $this->settings['dir'] = str_replace( 'http:', 'https:', $this->settings['dir']);
を追記してください。
※強制的に「http:」を「https:」に書き換えています。
シンプルな対応ですが、これでACFが無事動作するようになりました。
※プラグインのバージョン更新時に毎回訂正する必要がありますので、注意してください。