注册卸载/停用挂接后的管理通知

时间:2013-07-31 作者:orionrush

我已成功添加要在上显示的管理通知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>";
 }

1 个回复
最合适的回答,由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屏幕时插件没有激活。

结束

相关推荐

重定向期间忽略自定义ADMIN_NOTICES消息

我在中设置了错误处理机制one of my plugins 向管理区域添加通知和错误,就像核心一样。它在大多数情况下都能正常工作,但在某些情况下(如保存自定义帖子类型)却不能正常工作。我猜重定向是在幕后发生的,消息是在重定向发生之前打印的,因此它们似乎永远不会出现。所以,我猜这就是发生的事情用户编辑自定义帖子类型并点击Publish(发布)调用My post\\u updated(我的帖子更新)回调,该回调验证并保存自定义字段。回调添加错误消息。Wordpress重定向到某个页面以进行某些处理。调用My