今日、WP Codexの中を見ながら、プラグインのアンインストールスクリプトを処理する2つの方法(削除、オプション、データ、テーブルなど)を見ました。一つの方法はregister_uninstall_hook()
を使うことで、もう一つの方法は単純なuninstall.php
を使うことです。
codexページ には両方についての多くの情報が記載されていますが、どちらを使用することの利点が何であるかについては説明していません。
ここには非常に多くのWPの教祖がいるので、私はどのオプションがアンインストールスクリプトを扱うより良い方法についてこの質問をするべきであると思いましたか? register_uninstall_hook()
とuninstall.php
のどちらを使う?
誰かが明確にすることを願っています。前もって感謝します。
uninstall.php
の利点と、それが導入された理由は、プラグインの残りのコードからアンインストールコードを分離できることです。これは、アンインストール時にプラグイン全体をロードする必要がないことを意味します。これにより、プラグインがアクティブな場合にのみ実行されることを意図したアンインストール中に、プラグインが誤ってコードを実行する可能性が最小限に抑えられます。ただし、一般的には、とにかくプラグインファイルで任意のコードを実行しないでください。ほとんどのすべては、フックによってトリガーされた場合にのみ実行する必要があります。
プラグインは、アンインストールフックを登録するときに、関数の外部で任意のコードを実行しないでください。フックを使用して実行するには、プラグインを含める必要があります。つまり、関数の外側にあるコードはアンインストールプロセス中に実行されます。プラグインはアンインストールプロセスを妨げるべきではありません。
プラグイン内でコードを実行せずにプラグインを作成できない場合、プラグインはベースプラグインフォルダーに「uninstall.php」という名前のファイルを作成する必要があります...
TL; DR:プラグインは、実際にはhaveを持たないように構成する必要がありますunisntall.php
を使用しますが、それを使用すると、アンインストール中に誤って実行することに対する保護が追加されます。
もちろん、場合によっては適切にアンインストールするためにプラグインの一部をロードする必要があるかもしれません。ただし、uninstall.php
を使用している場合、これらのファイルを含めることは意識的に決定されるため、任意のコードを実行するプラグインのファイルを誤って読み込むのは困難です。
register_uninstall_hook()
メソッドを使用するのは、非常に単純な単一ファイルのプラグインのみで、すべてのコードが単一のクラスにカプセル化されます。
uninstall_plugin()
はpre_uninstall_plugin
を実行することに注意してください および [編集:uninstall_{$plugin_file}
uninstall_{$plugin_file}
は、register_uninstall_hook()
が使用されている場合にのみ実行されます]使用するメソッドに関係なく、アクションフック。 (チケットを参照してください #34569 。)
まあ、それはあなたが望むものに依存します。 register_uninstall_hook()
はフックを作成し、uninstall
リンクがクリックされたときに実行されます。つまり、アンインストールリンクをクリックすると呼び出されるフックを実際に作成します。プラグインを開発し、そのプラグインに基づいて他のプラグインを作成し、プラグインに追加するプラグインをベースとしたプラグインのアンインストールで操作を実行する必要があるとします。 ここ あなたは完全な概要を得るでしょう。
そしてuninstall.php
はあなたのプラグインのための一般的なアンインストーラです。プラグインのアンインストール時に起動します。しかし、デフォルトではフックは提供されません。
詳しくは こちら をご覧ください。