プラグインがサイトからアンインストールされると、プラグインのクリーンアップが必要になることがあります。
ユーザーがプラグインを無効化した後、WordPress 管理画面内で削除リンクをクリックすると、プラグインはアンインストールされたとみなされます。
プラグインがアンインストールされたら、プラグインオプションやプラグイン固有の設定、テーブルなどのデータベースエンティティを消去してください。
経験の浅い開発者は、この目的で無効化フックを使うという間違いを犯すことがあります。
この表は、無効化とアンインストールの違いを示しています。
方法1: register_uninstall_hook
アンインストールフックを設定するには、関数 register_uninstall_hook() を使用します:
register_uninstall_hook(
__FILE__,
'pluginprefix_function_to_run'
);
方法2: uninstall.php
この方法を使用するには、プラグインのルートフォルダー内にファイル uninstall.php
を作成する必要があります。このマジックファイルは、ユーザーがプラグインを削除したときに自動的に実行されます。
例: /plugin-name/uninstall.php
何かをする前に、
uninstall.php
で常に定数 WP_UNINSTALL_PLUGIN
をチェックします。これは直接アクセスを防ぐためです。
この定数は WordPress が uninstall.php
を起動する際に定義されます。
register_uninstall_hook() でアンインストールする場合、定数は定義 されません。
以下は、オプション・エントリーを削除し、データベース・テーブルを取り除く例です:
// if uninstall.php is not called by WordPress, die
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
die;
}
$option_name = 'wporg_option';
delete_option( $option_name );
// for site options in Multisite
delete_site_option( $option_name );
// drop a custom database table
global $wpdb;
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mytable" );
マルチサイトでは、オプションを削除するためにすべてのブログをループすることは非常にリソースを消費します。