WordPressのテーマをカスタマイズする事が多い昨今。
よく使うのが海外の有料テーマ「Themify」のテーマ群です。
ここのテーマには「Themify Builder」という独自のビルダーが内蔵されており更新管理もとても楽なのです。
ただし、ソースは入れ子ラッシュになりますけども(笑)

で、本番環境で旧サイトが稼働している段階でWordpressを格納するディレクトリを作って作業している場合。
本公開の際に旧サイトを削除して、Wordpressの設定画面でディレクトリを削って公開という流れはよくあるんですけども、こういう場合一番困るのは「内部リンクを書き換えなければ404エラーになってしまう」という事です。
フルパスでリンクが生成されるWordpressの宿命ではあるんですけども、かといって制作の段階でディレクトリ削ったリンクを生成していくのも面倒くさいじゃないですか。
リンクを辿って確認していく事も出来ませんしね。
かといって、.htaccessで転送かけるのもなんかイヤだ、という性格の人の場合はこの書き換え作業でちょいと困ります。

普通のWordpressのテーマであればこの場合は以前にも紹介した「Search Replace DB」で書き換えてやれば一発。

WordPressをSSL化 ― Search Regexに潜む罠とは

あちこちではよくWordpressの一斉置換の場合Wordpressプラグインの「Search Regex」が紹介されてますけども、あのスクリプトは「投稿」「固定ページ」内だけしか置換出来ないので、例えばウィジェットなんかにバナーを置いて内部リンク貼ってる場合やカスタム投稿タイプを使っているとスクリプト本体を書き換えなきゃなりません。
なので、最近は「Search Replace DB」を使っています。

内部リンクを書き換える場合、まずはこいつでaタグのhrefを書き換えます。
当ブログだとこういう感じ:
href=”blog.g-fellows.com/wp/ → href=”blog.g-fellows.com/

ここで「https://blog.g-fellows.com/wp/」を「https://blog.g-fellows.com/」と置き換えちゃうと色々マズいです。
画像のフルパスも全て書き換わってしまうのでサイトは完全に崩壊します(笑)

・・・と、普通はこれでウィジェットも含めたURLも書き換わるはずなんですが
Themifyのテーマの場合、これだけではサイト内のフルパスは書き換わってくれません。

なんでや?と思ってデータベースを直接開いて見比べたりしていると、どうやら独自ビルダー「Themify Builder」を使った部分だけが書き換わってない様子。

投稿データは通常データベーステーブルの「wp_posts」内に全て収められてるんですけども
Themify Builderで作った部分はwp_postmetaに「独自の形式」で収められるんですな。

Themify Builder内でテキストリンクを使用した場合

この場合、テーブル内には

a href=\\\”https://blog.g-fellows.com/wp\/

という形で収められています。
そりゃさっきのヤツでは書き換わらんわけだよ・・・・

なので

a href=\\\”https://blog.g-fellows.com/wp\/ → a href=\\\”https://blog.g-fellows.com/
とSearch Replace DBで書き換えてやればテキストリンクは無事に書き換わります。

Themify Builder内で画像に内部リンクを使用した場合

次はBuider内の「Image」を使ってバナーなどに内部リンクを貼っていた場合はこういう形式で収められています。

“link_image”:”https://blog.g-fellows.com\/wp\/

そりゃさっきのヤツでは(以下r

今回の場合、テキストの場合と違ってドメイン名の末尾にエスケープシーケンスが入っているのに注意。

なので

“link_image”:”https://blog.g-fellows.com\/wp\/ → “link_image”:”https://blog.g-fellows.com\/
とSearch Replace DBで書き換えてやればOKです。

自分の場合、Builder内の機能ってあんまり使わないので今回これだけで済みましたが、他の設定項目でURLを含む何かを設定した場合にも何らかの形で置き換えないとマズい形になっているかも知れませんな。

もうその場合、てっとり早そうなのがアクセスが少ない時間帯に、Wordpressを丸ごとバックアップして再現するプラグイン「All-in-One WP Migration」を使ってWordpressごと移設しちまうのが早いかもしれません。

All-in-One WP Migration – WordPressのサーバー移設が簡単にできるプラグイン

このプラグイン、Wordpressサイト全体が512MB以下であれば無料で使用出来ますのでとても便利です。
インポートする際にリンク先の変更も自動でやってくれます。
少なくとも僕の場合は1度もミスった事はありませんが、決して万能ではないという事で自己責任で使用願います。