最近、借りてるサーバをXserverにしたのをきっかけにまずはバンドのサイトをSSL化しました。
https://fauntime.com
暗号化がどーたらとかそういう理由もなく、Xserverなら無料でSSLが使えるのでなんとなく。

このサイトはWordpressで構築しているのですが、WPのSSL化は以下の手順。

  1. まずはXserverの管理画面でドメインに対してのSSL発行
  2. WordPressの設定画面からURLの変更
  3. 内部リンクをSearch Regexで全て置換
  4. htaccessにリダイレクト用のコードを追記
  5. SSLのエラーチェック

というのがおおまかな手順。

すんなり行くかなーと思いきややっぱりそうはいかない。
こういう作業には必ず何か罠が潜んでいる。

3の「内部リンクをSearch Regexで全て置換」の所ですこし手間取りました。
Search RegexはWordpress内のデータ置き換えツールとしてそれなりにメジャー。
それで「http://~」を「https://~」で書き換えりゃOKだと思ってたんですわ。

しかし、このバンドサイトはテーマが「カスタム投稿タイプ」を使用しているんですな。
Search Regexはそのままでは投稿と固定ページ内のみしか検索で拾ってくれんようで・・・

置き換えた後、サイトを見に行くとあちこちで出るわ出るわ「混在してます」エラーが。
これだとサイトを閲覧していても非常にうっとうしい。

このWordpressテーマ「Music Club」はライブ情報の部分がスラッグ「event」のカスタム投稿タイプ。
なので、Search Regex本体を書き換える事で無理矢理対応。

WP管理画面の「プラグイン」→「プラグイン編集」からSearch Regexを選択。
そこでsearch-regex/searches/post_content.phpを選んで編集画面に入ると・・・

<?php

class SearchPostContent extends Search {
	function find( $pattern, $limit, $offset, $orderby ) {
		global $wpdb;

		$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page') ORDER BY ID ".$orderby;

という感じで7行目に明確にpost(投稿)とpage(固定ページ)が宣言されております。
ここに

<?php

class SearchPostContent extends Search {
	function find( $pattern, $limit, $offset, $orderby ) {
		global $wpdb;

		$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page','event') ORDER BY ID ".$orderby;

とライブ情報ページのスラッグ「event」を足してやれば、Search Regexの検索結果にライブ情報ページの物が出てくるようになります。

あと、このテーマは内部のページビルダーを使えますが
そのビルダー内で作った部分もSearch Regexでは拾ってはくれませんw
結局、手作業の方が多いじゃねえかクソ野郎!っとも思ったし、
この作業終わってから自分が書いた「[WordPress]内部のパスを一気に書き換えるスクリプト」という記事を思い出したりしてなんかもうワヤですわ。

多分「SEARCH REPLACE DB」の方が良い仕事すると思います・・・・
Search Regexで悩んでる人の為に書き記してはおきますが(笑)