首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WP_List_Table大容量操作管理通知

WP_List_Table大容量操作管理通知
EN

Stack Overflow用户
提问于 2017-11-03 14:11:06
回答 1查看 1.2K关注 0票数 0

我使用WordPress WP_List_Table显示所有请求列表,我定制了大容量操作来批准和拒绝用户请求,但是每当执行批量操作时,我都想添加管理通知,但它不起作用,我认为页面正在重定向。

代码语言:javascript
复制
function process_bulk_action() {
    if( 'approve'===$this->current_action() )
    {
        $objCustomUserRoles = new CustomUserRoles();
        if(!empty($_REQUEST['wp_premium_users_request']))
        {
           foreach ($_REQUEST['wp_premium_users_request'] as $key => $value) 
           {
               $objCustomUserRoles->updateCustomerToPremium($value);
           }
           add_action( 'admin_notices', 'my_update_notice');
        }
    }
}

function my_update_notice() {
?>
<div class="updated notice">
    <p><?php _e( 'User approved!', 'avia_framework' ); ?></p>
</div>
<?php
}   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 16:39:24

您的add_action( 'admin_notices', 'my_update_notice');行很好,您所附加的动作处理功能也很好。因此,这个问题与您所使用的process_bulk_action()函数在何时何地被调用有关。

记住,admin_notices钩子在WordPress中是在报头中发射。如果您的process_bulk_action()函数被一个主题或插件所使用,它实际上已经连接到了另一个在admin_notices事件发生之后出现的动作,那么您的通知将永远不会被看到。没有错误,只是什么都没有。你只是上钩太晚了。

要纠正这一点,请将这个process_bulk_action()函数的用法移到一个更早的钩子,即在admin_notices发生之前触发的钩子。我建议admin_init。通过这种方式,您的操作处理程序实际上将在应该调用的时候被调用,并且通知将按预期的方式显示。

还要确保在看到通知之前,没有任何其他代码可以将用户从处理表单提交的PHP进程中重定向出去;也就是说,如果用户在HTML标记加载之前被重定向,那么也不会看到通知。

撇开不说:--您发布的代码容易受到各种攻击。在使用之前,请确保正确地净化正在处理的请求数据。

简而言之,您不能确切地知道(除非您检查),$_REQUEST['wp_premium_users_request']实际上是一个数组。此外,您无法确切地知道数组实际包含了什么。因此,在使用来自web浏览器表单提交的不受信任数据源中的任何内容之前,一定要彻底验证/清理。

另外,一定要使用使用和验证一个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47097798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档