uninstall.php
フックを提供することによってプラグインが削除された場合、WordPressはプラグインにdbをクリーンアップするための素晴らしい方法を提供します。あなただけのクリーニングコードを配置する必要があり、それは動作します。
しかし、私の質問は、uninstall.php
ファイル内のプラグインファイルで定義されている関数を使用しているプラグインをいくつか見たことです。私の理解するところでは、プラグインがすでに無効になっていて、その後ユーザーがそれを削除しようとしているのであれば、これらの機能にアクセスできないかもしれません。
私の仮定は正しいですか、私が知らないWordPressの魔法はありますか?
Uninstall.phpファイル内のプラグインファイルに定義されている関数を使用しているプラグインがいくつかあります。
uninstall.php
がプラグインの機能の1つを呼び出す場合、それはうまくいきません、それはFatal error: Call to undefined function
を生成します。そうでなければ・・・(下記説明)。
一方、これはうまくいきます:
<?php
/* Plugin Name: Test Uninstall */
register_activation_hook( __FILE__, 'test_activate' );
register_uninstall_hook( __FILE__, 'test_uninstall' );
function test_activate() { update_option( 'testing_uninstall', true ); }
function test_uninstall() { test_delete_me(); }
function test_delete_me() { delete_option( 'testing_uninstall' ); }
その理由は、関数 uninstall_plugin()
でわかります。 unistall.php
が存在する場合、それは含まれ、実行され、ストーリーの終わりです。uninstall.php
ファイルが存在しない場合、およびアンインストールフックを登録した場合、メインプラグインファイルが含まれます:include WP_PLUGIN_DIR . '/' . $file;
- コールバックを使用可能にし、したがって他の機能も使用可能にします。
uninstall.php
ファイルにいくつかのinclude
name__sを作成できますが、アンインストールプロセスはこれを必要とするほど複雑ですか?
関連のwpハッカースレッド からの引用(私の強調)
アンインストールフックはデータベース内に格納されており、実行時には決定されません。アンインストールフックが呼び出されたとき、あなたのプラグインは
init
name __/plugins_loaded
/admin_init
などのフック起動を受け取らないでしょう、それは純粋な"クリーンアップするために実行する自己保持コードがあります"