Wp_list_table中的URL重定向和批量操作

时间:2017-03-22 作者:Greeso

我正在使用the Custom List Table Example plugin 作为创建自己的自定义列表表的基础。一切都很好,除了一个棘手的问题。

当我通过process_bulk_action() 方法,我想使用wp_redirect(). 以下是一个示例:

function process_bulk_action() {

    // Some security check code here

    // Get the bulk action
    $action = $this->current_action();

    if ($action == \'bulk_trash\') {

        // Code for the "delete process"

        // Assuming "delete process" is successful
        wp_redirect("http://url/path.php?update=1&message=some_message");
        exit;
    }

}
请注意,在通话中wp_redirect("http://url/path.php?update=1&message=some_message"), 我试图重定向到显示列表表的同一页面,以便用垃圾处理的结果重新加载列表。还请注意message 在允许我向用户显示有关批量操作结果的通知的路径中。

问题是,我收到一条错误消息Cannot modify header information - headers already sent by <file path>.

我理解消息的含义,以及背后的原因(页面已加载,无法重定向)。但是,如果我想在处理批量操作后重定向,那么如何重定向?如果重定向不是正确的解决方案,我还有哪些其他选项允许我重新加载自定义wp_list_table 是否再次使列出的记录反映被删除的项目(即,发布的项目较少,而垃圾箱中的项目较多)?

谢谢

3 个回复
SO网友:sorabh86

了解层次结构,您不需要重定向,因为表单正在同一页面上发布值。

function process_bulk_action() {

    // Some security check code here

    // Get the bulk action
    $action = $this->current_action();

    if ($action == \'bulk_trash\') {

        // Code for the "delete process" 
       $delete_ids = esc_sql($_POST[\'bulk-delete\']);

       //loop over the array of record ids
       foreach($delete_ids as $id) {
            self::delete_item($id);
       }

       // show admin notice
       echo \'<div class="notice notice-success is-dismissible"><p>Bulk Deleted..</p></div>\';
   }

}
另一种方法是prepare\\u items

public function prepare_items() {
      // first check for action
      $this->process_bulk_action();

      // then code to render your view.

}

SO网友:DARK_DIESEL

您需要在admin\\u action{action\\u NAME}钩子中处理批量操作。不在wp\\U list\\U table类中。阅读更多信息here

SO网友:Abhilash Narayan

“echo”文档。位置=“”http://url/path.php?update=1&message=some_message\'这解决了我的问题

相关推荐

WordPress Global Redirect

我需要进一步展开讨论Redirect entire website to a single page 包括两页而不是一页。在这个网站上,我需要两个网页是活的和所有其他重定向到主页。http://prairiebrand.com/这就是我正在尝试的代码,我得到了一个永久重定向。add_action( \'template_redirect\', \'wpse_76802_goodbye_redirect\' ); function wpse_76802_goodbye_redire