プラグイン制作企画

all-in-one-migration を作ってみる | 止まらないバックアップリカバリープラグインの自作

この書き込みは、all-in-one-migration の真似をしてワードプレスを引っ越しさせるプラグインを作ろうという企画です。
出来上がったプラグインだけ欲しい方は こちらから→まだできてない

止まらない all-in-one-migrationもどきプグインの自作

ワードプレスの引っ越しといえば、all-in-one-migration の plugin を使います。
ごめん、この決めつけはマイブームwww

でも all-in-one-migration でバックアップ取ってたけどリカバリーできない!って、リカバリー中に止まりますというのはよく相談される。
バックアップの時に php のバージョンを合わせることと pluginを全部止めるってしておけば、大抵は問題なくリカバリーできます。

でも、よくわからない(多いのは独立したWEBデザイナーさん)方が
「なんかバックアップできるみたいだからいれてバックアップしてる。」
とか、
「やっぱバックアップは自動でやってほしい。このプラグインだと”できそうだから”」
とか、やっちゃってるんですよね。

いや、自分で使うツールなんだから最低でもリカバリーテストぐらいやりなさいよ。なんですけどね。

all-in-one-migration ならまだしも、ほかのバックアップツールの多くは有料にしないとリカバリーできないから。
all-in-one-migration は、まだ敷居が低いし無料でもなんとかできる(私は)

でも実際問題起っちゃうんですわ。
そうなったら今のところお手上げ。メタデータをバックアップしてきて復旧するしかない。
せめてプラグインの有効化フラグを倒せたら即メタでのリカバリーしなくていいんですけどね。
all-in-one-migration の中を探ってみたけど、単にDBリカバリーしてるだけでいちいち見てない。

ので、自作しようと。
折角なら、自作工程を書き残しておこうと。
all-in-one-migrationが、こうなればいいなぁと思ってるあなたの参考になれば。

all-in-one-migration もどき制作工程(予定)

  1. プラグインの外回り制作
  2. データベーステーブルの出力
  3. テスト用サイトの設定
  4. データベーステーブルの入力
    データフォルダーの表示
    テスト用サイトでデータベーステーブルをリカバリーできるか?
  5. プラグイン/メディアの圧縮/解凍
    テスト用サイトで プラグイン/メディア リカバリー
  6. all-in-one にする
    止まらない all-in-one-migrationもどきのために javascriptでデータベーステーブルを分割保存
    止まらない all-in-one-migrationもどきのために javascriptでプラグインを保存
    止まらない all-in-one-migrationもどきのために javascriptでメディアを保存
  7. all-in-one ファイルの管理
    データファイルの表示
  8. 不要テーブル削除機能追加
  9. all-in-one-mirationモドキ機能追加

プラグインの外回り制作

プラグインを作るときのひな型

ひな形を使って all-in-one-migrationもどきの外回り(オプション設定等)を制作。

プラグインの外回り制作の詳細はこちらから→プラグインのひな型を使って簡単にプラグインを作る

all-in-one-migrationもどきプラグイン雛形の改良

all-in-one-migrationもどきに必要なモジュールは、実際のバックアップリカバリーを行うページです。
となると、ひな形で残すのは、
  • プラグインヘッダ
  • バージョン番号
  • プラグイン名
  • プラグイン説明
  • トレース関数
  • フック
    コンテンツ置換
    設定画面
    ショートコード
  • ショートコード関数
  • コンテンツ置換関数
  • 設定画面設定
  • 設定画面関数
  • option文字列変換関数
  • デフォルト設定関数
  • 文字列置換関数(改行外す)
  • 文字列置換関数(改行)
  • 文字列置換関数(記号→特殊文字)
  • 文字列置換関数(特殊文字→記号)

all-in-one-migration もどきプラグインで雛形に追加する機能

all-in-one-migration もどきプラグインで雛形に追加する機能は、管理画面(設定-all-in-one-migrationモドキ設定画面)から全部呼び出す形になります。

  • エクスポート
    データベースエクスポート+圧縮
    プラグインフォルダー圧縮
    アップロードフォルダー圧縮
    データベース、プラグインフォルダー、アップロードフォルダー圧縮 → 圧縮
  • all-in-one-migrationモドキファイル一覧
    削除
    インポートへリンク
  • インポート
    解凍 → データベース書き込み → プラグイン、アップロードフォルダー展開

ファイルが大きくなった時PHPの実行時間がサーバーの制限を超す可能性があるので実際のエクスポート、インポートは、javascriptで php を呼び出す形にします。
そのため、データベーステーブルもテーブル単位で出力するようにします。

ここでデータベーステーブル一覧が必要になるわけですが、そうするとテーブル一覧からバックアップするテーブルを指示することも可能になるなと夢が膨らみます。

ワードプレスのデータベーステーブルの出力

ワードプレスのデータベーステーブルの出力を行うときに必要になるのがデータベースの情報です。
情報というより、使用中のデータベース名、そのデータベースを操作できるデータベースユーザーのIDとパスワード。
データベースがどこにあるか=データベースホスト名。
ターゲットのデータベース(現在ワードプレスが使っているデータベースのテーブルプレフィックス)

それらは、以下の変数に入っています。

  • データベース名:DB_NAME
  • データベースユーザーID:DB_USER
  • データベースユーザーパスワード:DB_PASSWORD
  • デーベースホスト:DB_HOST
  • データベーステーブルプレフィックス:global $table_prefix;

データベーステーブルの一覧

MySQLのデータベース
データベーステーブルのSQLファイル出力
(複数あるのでフォルダーに投げ込んでテストサイトに渡す)

テスト用サイトの設定

新しいワードプレスサイトの設定
すぐ再生できるように all-in-one-migration でバックアップ

データベーステーブルの入力

データベースバックアップ(フォルダー)からのデータベーステーブルのリカバリー
データベース内のURLの置き換え機能追加
リカバリー後ログインできるか確認

プラグイン/メディアの圧縮/解凍

プラグイン/メディアの zip 圧縮
プラグイン/メディアの zip 解凍

all-in-one にする

データベーステーブルフォルダーを圧縮
プラグインフォルダーを圧縮
データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の圧縮

データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の解凍
データベーステーブルのリカバリー
データベース内のURLの置き換え
解凍フォルダーの削除

all-in-one ファイルの管理

all-in-one-migration もどきのファイル一覧作成
all-in-one-migration もどきのファイル一覧から解凍
all-in-one-migration もどきのファイル一覧から削除

不要テーブル削除機能追加

データベーステーブル一覧表示機能追加
データベーステーブル一覧からテーブルの削除機能追加

all-in-one-mirationモドキ機能追加

今のところ特に考えていない。
制作中に思いついたら書き足していく。
スポンサードリンク

関連記事一覧