WordPressの無料テーマ「Cocoon」は多機能で初心者にも使いやすいことで知られていますが、機能が多すぎてかえって使いにくいと感じる方も少なくありません。
一方、有料テーマ「SWELL」は洗練されたデザインと直感的な操作性で人気を集めており、CocoonからSWELLへの乗り換えを検討するユーザーが増えています。
しかし、Cocoonで1000記事ほど運用してきたサイトをSWELLに乗り変える際に立ちはだかるのが、専用ブロックの置き換え問題です。
ブロックエディタ(Gutenberg)登場以降、各テーマは独自の専用ブロックを提供するようになりました。Cocoonにも「Cocoon Blocks」と呼ばれる独自ブロックが多数存在し、これらはSWELLではそのまま動作しません。テーマを変更すると、これらのブロックは「ブロックはサイトでサポートされていません」というエラー表示になり、デザインが大きく崩れてしまいます。
従来、この置き換え作業は一つひとつの投稿を開いて手動で修正するのが一般的とされており、これがテーマ乗り換えの大きな障害となっていました。しかし、データベースを直接書き換えることで、この作業をほぼ自動化することが可能です。
本記事では、CocoonからSWELLへのテーマ変更に際し、専用ブロックを一括で自動置き換えする方法を解説します。
なぜ手作業での置き換えは現実的ではないのか
まず、手作業での置き換えがどれほど非現実的なのかを理解しておきましょう。
作業量が膨大で時間がかかる:記事数が1000件あれば、1件あたり数分の作業でも数十時間に及びます
置き換え漏れが必ず発生する:人間が手作業で行う以上、見落としは避けられません
古いブロックが残ると将来的なリスク:SWELLのアップデートに対応しづらくなり、予期せぬレイアウト崩れの原因になります
特に吹き出しブロックやボックスブロックなど、記事の随所に埋め込まれている装飾ブロックをすべて手動で見つけ出し、SWELLの対応ブロックに置き換えるのは、現実的な作業とは言えません。
解決策:データベース直接書き換えによる一括置換
そこで登場するのがデータベースを直接書き換えるというアプローチです。
WordPressの投稿内容はすべてデータベースの wp_posts テーブルにHTMLコメント形式で保存されています。Cocoonの独自ブロックも、次のような専用のブロック記号(HTMLコメント)として保存されています。
<!-- wp:cocoon-blocks/xxx --> ... <!-- /wp:cocoon-blocks/xxx -->
このブロック記号を、SWELLの対応するブロック記号にコードレベルで置き換えるルールを決め、SQLで一括置換することで、全投稿を一瞬で変換できます。
実行前の絶対条件:バックアップを必ず取る
ここで最も重要なのは、作業前に必ずデータベースのバックアップを取ることです。
データベースを直接書き換える作業は、ミスが許されません。置換ルールを誤ったり、想定外の文字列まで置き換えてしまうと、サイトが真っ白になる可能性もあります。
バックアップは以下の方法で確実に行いましょう。
・WordPress管理画面から「All-in-One WP Migration」などのプラグインでフルバックアップ
・サーバー側(エックスサーバーなど)の自動バックアップ機能を確認
・phpMyAdminなどでデータベースをSQLダンプとしてエクスポート
失敗してもすぐに戻せるように、復元手順も確認した上で作業に臨みます。
公式乗り換えサポートプラグインの活用
なお、SWELL公式が提供する「Cocoon乗り換えサポートプラグイン」も併用することで、より安全かつスムーズな移行が可能になります。
このプラグインは以下のような機能を提供します。
・テキスト装飾(太字、カラー、マーカーなど)の維持
・ボックス系(はてな、メモ、グッド、案内など)の変換
・吹き出しブロックの表示維持
・カラム、トグルボックス、タイムラインなどの変換
・各種ショートコードの自動変換
ただし、このプラグインの役割は「移行作業をなくすこと」ではなく、「移行直後の表示崩れを一時的に抑えること」 です。すべての機能を維持できるわけではなく、掲載されていない装飾やショートコードはサポート外となります。
最終的には、プラグインに頼らずSWELLのブロックに完全に置き換えることを目指しましょう。全記事の置き換えが完了したら、プラグインを無効化することをおすすめします。
まとめ:自動化でテーマ移行の障壁をなくす
CocoonからSWELLへのテーマ変更は、専用ブロックの置き換え作業が最大の障壁でした。しかし、以下の手順でデータベースを直接書き換えることで、ほぼ自動で置き換えを完了することができます。
・Cocoonブロックが使われている箇所をSQLで全てリストアップ
・各Cocoonブロックに対応するSWELLブロックを決定(対応表を作成)
・対応表に従ってSQLで一括置換を実行
この方法の最大のメリットは、作業が一瞬で終わることです。1000記事あっても、エディタを開くことなく全投稿のブロックを置き換えられます。
ただし、必ずバックアップを取った上で、テスト環境で事前検証を行ってから本番環境で実行することを強くおすすめします。正確な置換ルールの設計と安全なSQLの作成が、成功の鍵を握っています。
テーマ移行の障壁を自動化で取り除き、CocoonからSWELLへの乗り換えをスムーズに実現しましょう。