WordPressのテーマを「Snowmonkey」から「SWELL」へ切り替えた際に、こんな悩みはありませんか?
「デザインは大きく崩れなかったけど、投稿の中にSnowmonkeyの専用ブロックが残ってしまう…」
「SWELLのブロックに手作業で置き換えるのは大変だし、数が多いと見落としも出てしまう…」
実はこのブロックの置き換え、データベースを直接書き換えることで一括処理が可能なんです。本記事では、実際にSnowmonkey→SWELLへの移行で行った効率的なブロック置き換え方法をご紹介します。
SnowmonkeyからSWELLに切り替えても、なぜ大きな崩れが起きないのか
Snowmonkeyは「Snow Monkey Blocks」という専用ブロックを使ってレイアウトを組んでいます。SWELLにテーマを変更しても、これらのブロックの多くは構造が比較的シンプルで、SWELLが標準でサポートするHTML構造と大きく矛盾しないため、サイト全体の大崩れは起こりにくい傾向があります。
ただし、SWELLにした後もSnowmonkeyのブロックが残ったままでは、メンテナンス性が悪く、今後のSWELLのアップデートにも対応しづらくなります。やはり「SWELLのブロックにきちんと置き換えたい」というニーズが出てきます。
手作業での置き換えは現実的ではない
通常、テーマを変更した後、過去の投稿に残った旧テーマ専用ブロックを新しいテーマのブロックに置き換えるには、エディタで一つひとつの投稿を開いて手動で修正するしかありません。しかし、投稿数が数十、数百とある場合、それはとても骨の折れる作業です。
・作業量が膨大で時間がかかる
・人間がやる以上、置き換え漏れが必ず発生する
・古いブロックが残ったままだと、将来的にレイアウト崩れの原因になる
こうした問題を解決するのが、データベースの直接書き換えというアプローチです。
解決策:データベースを直接書き換えて、一括でブロックを置き換える
WordPressの投稿内容は、すべてデータベースの wp_posts テーブルにHTMLコメント形式で保存されています。Snowmonkeyのブロックも、次のような専用のブロック記号(HTMLコメント)を持っています。
例)
<!-- wp:snow-monkey-blocks/〇〇 -->
...
<!-- /wp:snow-monkey-blocks/〇〇 -->
これを、SWELLの対応するブロック記号にコードレベルで置き換えルールを決めてSQLで置換することで、全投稿を一括で変換できます。
たとえば、
Snowmonkeyの「ボックス」ブロック → SWELLの「ブログカード風ボックス」に
Snowmonkeyの「段組み」ブロック → SWELLの「カラム」ブロックに
といった対応表を作成すれば、あとはデータベースの置換クエリを流すだけで、何百ページあっても一瞬で処理が完了します。エディタを一切開く必要はありません。
ただし、正確な置換ルールの設計がカギ
この方法を成功させるには、
・新旧ブロックの内部構造(HTMLのクラスや属性) を正確に把握すること
・置換後もデザインが崩れないように、適切なブロックにマッピングすること
・置換してはいけない部分(通常のテキストなど)を巻き込まない、安全なSQLを書くこと
など、WordPressのデータ構造に精通した知識が求められます。試しにやったらサイトが真っ白になった…では困りますので、事前に必ずバックアップをとり、テスト環境で検証することが大切です。
「ブロックの置き換え、どうすればいいかわからない…」そんな方はご相談ください
「ブロックの置き換えルールはなんとなくわかるけど、データベース操作は怖い」
「数が多いから自動化したいけど、SQLに自信がない」
「そもそもマッピングを考えるところから手伝ってほしい」
そんな方は、ぜひ一度ご相談ください。
テーマ切り替え時のブロックの置き換え作業を安全かつスピーディーに代行いたします。Snowmonkey→SWELLに限らず、他のテーマ間の移行にも対応可能です。