我已成功添加要在上显示的管理通知register_activation_hook, 当插件更新时,但我看不到任何显示方式admin_notices 卸载或停用挂钩后。这有可能吗或者可以在此阶段使用javascript(有点像是)。
<小时>EDIT:
回答@G.M.。我已经阅读了文档和@kaiser,我已经看到了你在这些挂钩上的精彩文字,但除非我马虎,遗漏了一些东西,否则这两个挂钩的操作似乎与激活挂钩不同。以下是我测试的内容:
确实如此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>";
}
最合适的回答,由SO网友:bseddon 整理而成
简单的回答是不,这是不可能的。当您停用插件时,它将被停用,因此在刷新admin屏幕时不会运行admin\\u notices操作。你可以用一种稍微不同的方式来确认它。
在停用功能中包括以下行:
set_transient(\'my_deactivation_transient\', \'My plugin is being deactivated\', 100);
使您的admin\\u notices函数如下所示:
function my_admin_notices()
{
$message = get_transient(\'my_deactivation_transient\');
if (empty($message)) return;
echo "<div class=\'error\'><p>$message</p></div>";
}
当您停用插件时,将不会看到任何消息。当您再次激活插件时,您将看到消息。并不是没有调用admin\\u notices函数,而是在刷新admin屏幕时插件没有激活。