スタンドアロンの restore ツールでは、JSON 設定ファイルを通じて復元動作のカスタマイズに対応しています。これは WordPress Plugin と同様のフィルターベースのカスタマイズを、WordPress を動作させずに行える仕組みです。
注意: wpstg-restore-config.json ファイルが存在しない場合、restore ツールは通常の既定の動作で実行されます。
仕組み
wpstg-restore.phpと同じディレクトリにwpstg-restore-config.jsonという名前のファイルを配置します。- ツールは起動時にこの設定を読み込み、復元中にフィルターの値を適用します。
- 設定ファイルが存在しない場合、ツールは通常どおりすべての既定値を使って動作します。
設定ファイルの形式
{
"version": 1,
"filters": {
"filter.name": "value"
}
}
version: スキーマのバージョン。1を指定してください。filters: フィルター名と値の対応を表すオブジェクト。
すべてのフィルターを既定値で記述した完全な例については、wpstg-restore-config.example.json をご覧ください。
利用可能なフィルター
真偽値フィルター
これらのフィルターは true または false を受け付けます。
| フィルター名 | 既定値 | 説明 |
|---|---|---|
wpstg.backup.restore.keepExistingPlugins | false | true の場合、復元前に既存の Plugin を削除しません。Backup の Plugin は既存ディレクトリにマージされます。 |
wpstg.backup.restore.keepExistingThemes | false | true の場合、復元前に既存のテーマを削除しません。 |
wpstg.backup.restore.keepExistingMuPlugins | false | true の場合、復元前に既存の mu-plugin を削除しません。 |
wpstg.backup.restore.keepExistingMedia | false | true の場合、復元前に既存のアップロードやメディアファイルを削除しません。 |
wpstg.backup.restore.keepExistingOtherFiles | false | true の場合、wp-content 内のその他のファイルを復元前に削除しません。 |
wpstg.backup.restore.innodbStrictModeOff | false | true の場合、データベースインポート中に InnoDB Strict Mode を無効化します。異なる InnoDB 設定のサーバーから復元する場合に有用です。 |
配列フィルター
これらのフィルターは文字列の配列を受け付けます。
| フィルター名 | 既定値 | 説明 |
|---|---|---|
wpstg.backup.restore.exclude_backup_parts | [] | 復元中に完全にスキップするパーツです。有効な値: plugins、themes、uploads、muplugins、wpcontent、wpstgdb、lang、dropins、wproot。 |
wpstg.backup.restore.exclude_paths | [] | ファイル復元中に除外するディレクトリパス。末尾の / は自動で付加されるため、"starter-templates" は starter-templates/ を含むパスにはマッチしますが、starter-templates-pro/ にはマッチしません。例: ["starter-templates", "elementor"]。 |
wpstg.backup.restore.exclude.tables | [] | データベース復元中にスキップするテーブル名。例: ["wp_comments", "wp_commentmeta"]。 |
wpstg.database.import.excludedQueries | [] | データベースインポート中にスキップする SQL クエリのパターン。これらのいずれかの文字列を含むクエリは除外されます。 |
重要: exclude_paths では、末尾のスラッシュが自動で付加されます。これにより、意図しない部分一致を避けやすくなります。
設定例
復元するが既存の Plugin とテーマは残す
{
"version": 1,
"filters": {
"wpstg.backup.restore.keepExistingPlugins": true,
"wpstg.backup.restore.keepExistingThemes": true
}
}
データベースのみを復元する
ファイル関連の Backup パーツをすべてスキップするには、この設定を使用します。
{
"version": 1,
"filters": {
"wpstg.backup.restore.exclude_backup_parts": [
"plugins",
"themes",
"uploads",
"muplugins",
"wpcontent",
"dropins",
"wproot",
"lang"
]
}
}
データベース復元から特定のテーブルを除外する
{
"version": 1,
"filters": {
"wpstg.backup.restore.exclude.tables": [
"wp_comments",
"wp_commentmeta",
"wp_wc_orders"
]
}
}
ファイル復元から特定の Plugin とテーマを除外する
{
"version": 1,
"filters": {
"wpstg.backup.restore.exclude_paths": [
"starter-templates",
"elementor",
"themes/flavor"
]
}
}
ファイルのみを復元する
データベース復元をスキップするには、この設定を使用します。
{
"version": 1,
"filters": {
"wpstg.backup.restore.exclude_backup_parts": ["wpstgdb"]
}
}
フィルターの利用方法
Restorerによる直接利用:keepExisting*、exclude_backup_parts、exclude_pathsの各フィルターは、restore ツールのRestorerクラスから直接読み込まれ、どのパーツを復元するか、既存ファイルを先に削除するかどうか、復元中にどのファイルパスをスキップするかを制御します。ApplyFiltersTrait経由での利用:exclude.tables、excludedQueries、innodbStrictModeOffのようなデータベース関連のフィルターは、ApplyFiltersTraitを介して同梱のDatabaseImporterクラスで利用されます。このトレイトは、WordPress フックが利用できない場合のフォールバックとしてFilterConfigを確認します。
検証とログ出力
- 未知のフィルター名は警告として記録され、無視されます。
- 型の不一致(たとえば真偽値のフィルターに配列を設定するなど)は警告として記録され、スキップされます。
- 有効なフィルターはすべて、復元開始時にデバッグ用に記録されます。
- 不正な JSON は警告を発生させ、復元は既定の動作で継続されます。
- サポートされていない設定バージョンは警告を発生させ、すべてのフィルターはスキップされます。
デバッグのヒント: フィルターが適用されていないように見える場合は、まず復元ログで、未知のフィルター名・不正な型・不正な JSON・未対応の設定バージョンに関する警告が出ていないかを確認してください。
セキュリティ
- 許可リストに含まれるフィルター名のみが受け付けられます。
- サポートされる型は、
boolやstringのような基本型と、文字列の配列のみです。 - 設定ファイルを通じて、callable やコードの実行を行うことはできません。