みなさん、WebサイトのSSL対応(https化)はお済みでしょうか?
WordPressのSSLはプラグインもいくつか出ており紹介しているサイトもあります。
普通のサイトであれば問題がないのですが、カスタム投稿などでカスタマイズしたサイトで https にならないところがあるような現象が発生しました。
カスタム投稿などもSSL対応した手順を記します。
※作業前には必ずバックアップを行い、万が一のときは戻せるようにしておいてください。
SSL化プラグインの導入
プラグイン「Really Simple SSL」を使用しました。
プラグインを導入して有効化します。
その後、管理メニューの「設定」-「一般設定」から WordPressアドレス、サイトアドレスの「http://」を「https://」に変更します。
このプラグイン導入後に書かれる記事の自サイト内リンクURLは「https://」になりますが、導入前に投稿された記事内では「http://」のままです。
https://への書き換え
プラグイン「Search Regex」を使用して書き換えを行います。
プラグインを導入して有効化します。
管理メニューの「ツール」-「Search Regex」を開きます。
Source: Post content
Search pattern: http://ドメイン名
Replace pattern: https://ドメイン名
を入れ、「Search」をクリックして対象を確認します
「Replace」をクリックして置き換えの確認をします(この時点ではまだ保存はされない)
問題がなければ「Relpace&Save」をクリックして置き換え保存
カスタムフォームがある場合は、 Source:Post meta value に対しても同じことを行います。
カスタム投稿は変更されない?
カスタム投稿のフォーム書かれた記事内のURLが変更されません。
というのも、「Search Regex」は投稿タイプ ’post’、’page’ を対象にしているからです。
対応するためには、「Search Regex」プラグインのソースを修正する必要があります。
※修正前の post_content.php をバックアップするのであれば、別のフォルダに退避してください。同じフォルダにあると Search Regex の画面フォームが表示されなくなってしまう現象が起こりました。
/wp-content/plugins/search-regex/searches/post_content.php
の7行目の
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page') ORDER BY ID ".$orderby;
にある、post_type IN (‘post’,’page’) に投稿タイプを追加します。
もしくは、全ての投稿タイプに対して行うように、 AND post_type IN (‘post’,’page’) の部分を削除して
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID ".$orderby;
のようにしてしまいます。
修正後に「Search Regex」で書き換えを行ってください。
画像のURLが変わらない?
カスタム投稿でアップロードした画像は「Search Regex」ではURLが https:// に変わりません。
メディアのURLは、データベーステーブルの wp_posts.guid になるので「Search Regex」の処理対象外であるためです。
ここは phpMyAdmin を使用してURLを書き換えます。
UPDATE wp_posts SET guid = REPLACE(guid, ‘http://ドメイン名/wp-content/uploads/’, ‘https://ドメイン名/wp-content/uploads/’)
※ドメイン名直下にWordPressをインストールしている場合
まとめ
カスタム投稿などを使用したサイトではSSL対応も一苦労ですけど、私が対応したサイトでは上記の方法で一通り対応が完了いたしました。
プラグインのソースを変更したり、DBを直接操作したりするので十分に注意しながら作業してください。
コメントを残す