web-dev-qa-db-ja.com

register_uninstall/deactivate_hookの後のadmin_notices

管理通知をregister_activation_hookに表示するとき、およびプラグインが更新されたときに追加することに成功しましたが、アンインストールまたは無効化フックの後にadmin_noticesを表示する方法はありません。これは可能ですか。 代わりにこの段階でJavaScriptを使用することができますか? (はいのような)。


EDIT:

@ Gに答える。 M.私はすでにこれらのフックに関するドキュメントと@kaiserを読んだことがありますが、気が遠くなって見逃していない限り、これら2つのフックはアクティベーションフックとは動作が異なるようです。これが私がテストしたものです:

not無効化またはアンインストール時に管理ページに通知を表示します(ただし、 無効化のみ を使用すると、 意志 にメッセージが表示されます)フックが実行された後、プラグイン管理ページがリロードされる直前の白い画面。

register_deactivation_hook(__FILE__, "gfahp_deactivate");
function gfahp_deactivate(){
    $notices = sprintf('%sSome notice%s', '<div class="error fade"><p>', '</p></div>');
echo $notices;
 }

これも(どちらの場合も)動作しません。

register_deactivation_hook(__FILE__, "gfahp_deactivate");

function gfahp_deactivate(){  
    add_action( 'admin_notices', 'gfahp_checks', 0 );
 }
function gfahp_checks(){
    $notices = sprintf('%sSome notice%s', '<div class="error fade"><p>', '</p></div>');
    echo = $notices; // return does not work either
 }

Javascriptは非アクティブ化に取り組んでいますが、アンインストールはしていません。

register_deactivation_hook(__FILE__, "gfahp_deactivate");
function gfahp_deactivate(){
    $notices = 'Some notice';
    echo "<script>window.alert('$notices');</script>";
 }
2
orionrush

短い答えはノーです、それは不可能です。プラグインを無効にすると無効になるので、管理画面が更新されてもadmin_noticesアクションは実行されません。少し違った方法でアクションを使うことであなた自身でそれを確認することができます。

無効化機能に次の行を含めます。

set_transient('my_deactivation_transient', 'My plugin is being deactivated', 100);

Admin_notices関数を次のようにします。

function my_admin_notices()
{
    $message = get_transient('my_deactivation_transient');

    if (empty($message)) return;

    echo "<div class='error'><p>$message</p></div>";
}

プラグインを無効にしてもメッセージは表示されません。プラグインを再度アクティブにすると、メッセージが表示されます。 admin_notices関数が呼び出されないことではなく、管理画面が更新されたときにプラグインがアクティブにならないことだけです。

1
bseddon