WordPress | Contact Form 7 の複数のバージョンの検証を同一WPで行う際は終了後に管理画面から不要バージョンを削除すると大変なことになるので要注意!

過去バージョンの Contact Form 7 を導入したサイトで意図した動きをしないことがあっため最新バージョンほか様々なバージョンでテストを行いました。

作業完了後に利用しない Contact Form 7 を管理画面から削除したところ正しく設定したはずのフォームの情報が全て消えてしまう悲劇が起きました(泣)

CF7インストール状況確認

WordPress管理画面のインストール済みプラグイン一覧から複数のバージョンがインストールされている状況でしたので、利用しない古いバージョンを「削除」のリンクから実行しました。

削除実行後

正常に削除が実行され利用するもののみ残りました。

CF7のフォーム動作確認

一通りの検証作業と不要なプラグイン削除も終えて最後にフォームの動作確認を行なったところ理解出来ない表示になりました。

理想

何も問題なく以下のようなフォームが表示されるはずでしたが。。。

現実

フォームが表示されるはずなのに見つかりませんのエラー。。。

管理画面のCF7の設定状況確認

状況理解が出来なかったので、まず管理画面で確認しました。

理想

設定済みのフォームがあるはずなのに。。。

現実

見つかりませんとのこと。。。

DB内のデータ確認

最後のDB内のデータを確認してみました。Contact Form 7 のデータは、wp_posts テーブルに post_type が “wpcf7_contact_form” で登録されてるはずなので、検索してみました。

理想

問題なく検索されるはずが。。。

現実

該当レコードなし。。。

原因

データが消えてしまった原因は、私が無知だっただけですが、プラグインのアンインストール時に実行されるデータ削除処理があることを把握出来てませんでした(汗)

削除処理

Contact Form 7 のディレクトリ直下のアンインストール時に実行される “uninstall.php” 内に関連データの削除処理が記述されています。

function wpcf7_delete_plugin() {
	global $wpdb;

	delete_option( 'wpcf7' );

	$posts = get_posts(
		array(
			'numberposts' => -1,
			'post_type' => 'wpcf7_contact_form',
			'post_status' => 'any',
		)
	);

	foreach ( $posts as $post ) {
		wp_delete_post( $post->ID, true );
	}

	$wpdb->query( sprintf(
		"DROP TABLE IF EXISTS %s",
		$wpdb->prefix . 'contact_form_7'
	) );
}

上記の削除処理が実行されていたので、すべて消えてしまっておりました。

今回、あまり時間をかけず作業が終わる予定でしたので、バックアップ取得を怠ったため痛い目にあってしまいました。

同様の作業を行われる方は検証前のバックアップ取得とプラグインの動作を理解した上で作業を行い痛い目に遭わないようにしていただけますと幸いです。

コメント

タイトルとURLをコピーしました