アンインストールの方法

プラグインがサイトからアンインストールされると、プラグインのクリーンアップが必要になることがあります。

ユーザーがプラグインを無効化した後、WordPress 管理画面内で削除リンクをクリックすると、プラグインはアンインストールされたとみなされます。

プラグインがアンインストールされたら、プラグインオプションやプラグイン固有の設定、テーブルなどのデータベースエンティティを消去してください。

経験の浅い開発者は、この目的で無効化フックを使うという間違いを犯すことがあります。

この表は、無効化とアンインストールの違いを示しています。

シナリオ無効化フックアンインストール フック
キャッシュ / Temp を消去するYesNo
パーマリンクを消去するYesNo
{$wpdbprefix}_options からオプションを削除するNoYes
$wpdb からテーブルを削除するNoYes

方法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" );
マルチサイトでは、オプションを削除するためにすべてのブログをループすることは非常にリソースを消費します。

原文 / 日本語訳

s
検索
c
新規投稿を作成する
r
返信
e
編集
t
ページのトップへ
j
次の投稿やコメントに移動
k
前の投稿やコメントに移動
o
コメントの表示を切替
esc
投稿やコメントの編集をキャンセル