重定向并显示上一操作的通知

时间:2016-11-17 作者:anonymous2090248

我正在写一个插件。当一个项目(绘画)被单击以进行删除,而仪表板上显示了它们的列表时,我想将其删除,然后将用户重定向到显示的上一页。所以动作“删除”被捕获,然后转到动作“显示”

public function display_paintings_page() {
  $request = $this->get_request();
  switch ($request["action"]) {

  case "delete":
    ob_clean();
    ob_start();
    Myplugin_Painting_Info::delete($request["painting_id"]);
    wp_safe_redirect(wp_get_referer());
    break;

  case "show":
    include_once( "partials/myplugin-admin-paintings.php" );
    break;

   /*
   / ...
   */

  }
}
这是我能做的最好的了。但是,“delete”方法的操作消息(错误、成功)没有显示,因为必须清理输出缓冲区以防止出现“headers ready sent”错误。

除了ajax或显示中间页面并显示“项目已删除;单击返回”之外,还有其他方法可以做到这一点吗?

2 个回复
SO网友:Jen

观点:我喜欢ajax交互。删除是在服务器端完成的廉价、快速的事情,重新加载整个页面需要很长时间/意见

如果您要使用重定向并希望显示错误消息,那么有几个选项。

1。使用重定向url本身将信息传递给下一个请求

类似这样:

wp_safe_redirect(\'your_plugin_url?msg=\' . $message_code);
在视图中:

$messages = array(
    \'1\' => \'Success!\',
    \'2\' => \'Something went wrong :(\'
);

$msg_id = isset($_GET[\'msg\']) ? $_GET[\'err\'] : 0;
if (array_key_exists($msg_id, $messages)) {
    echo $messages[$msg_id];
}

2。使用$\\u会话传递数据

放置session_start() 在插件的早期初始化过程中,确保在发送任何页面输出之前运行插件。

然后在会话中记录错误或成功消息:

$_SESSION[\'painting_delete_msg\'] = \'success! woot!\';
wp_safe_redirect(\'your_plugin_url\');
然后在页面中:

if (isset($_SESSION[\'painting_delete_msg\'])) {
    echo $_SESSION[\'painting_delete_msg\'];
    unset($_SESSION[\'painting_delete_msg\']);
}
Theunset 确保错误不会重复。

3。不要使用重定向

  case "delete":
    ob_clean();
    ob_start();
    $status = Myplugin_Painting_Info::delete($request["painting_id"]);
    include_once( "partials/myplugin-admin-paintings.php" );
    break;

  case "show":
    include_once( "partials/myplugin-admin-paintings.php" );
    break;


// myplugin-admin-paintings.php
if (isset($status)) {
    echo $status->message;
}

SO网友:John Chandler

1) 向URL添加参数(例如,消息=XXXXXXXXXXX)(&;msg)。重定向到该位置。

2) 将其放入函数中。php

if ($_GET[\'msg\']) {
    wc_add_notice($_GET[\'msg\'], \'notice\' );
}

相关推荐

Redirect htaccess

我需要帮助重定向我的页面。例如,我有网站https://example.com. 我需要将内容从https://example.com 到https://example.com/blog. 这不是问题,我通过更改主页URL来做到这一点。这很有效。但现在我需要添加来自旧的重定向https://example.com 到https://xmpl.com.我想用。htaccess,但这不起作用。你们能帮帮我吗?以下是我对此的一些尝试,但两者都不起作用。RewriteEngine On RewriteRu