未清除List Table操作参数

时间:2017-10-16 作者:No3x

我在插件中使用list table类的一个子类来列出记录的邮件。您可以选择多封邮件重新发送或删除。表单数据将再次发送到同一页面。

这些条目是可排序的。这意味着,对于标题列,链接是通过将orderby和order GET参数(基类行为)附加到当前url来创建的。

选择邮件并执行重新发送操作。操作前:

admin.php?page=wpml_plugin_log
提交

提交页面并处理操作后:

admin.php?page=wpml_plugin_log&bulkactionsnonce=3bb20a74fd&_wp_http_referer=%2Fwp-admin%2Fadmin.php%3Fpage%3Dwpml_plugin_log&search_date&s&_wpnonce=35ec405ae8&action=resend&email%5B0%5D=59&action2=-1&orderby=timestamp&order=asc
但我希望url中不再有“action”、“action1”、“email”参数。

处理操作后的链接包含“action”参数。这意味着,如果您更改列的顺序,邮件将一次又一次地重新发送(这毫无意义)。url也会增长,并在使用一段时间后导致URI过长的Web服务器错误(对于apache)。我如何避免这种行为?

1 个回复
SO网友:Parham

让我从一个问题开始:如果用户在处理操作后只刷新页面会怎么样?它将重新提交操作。

因此,问题不仅在于可排序列标题的链接以及WP\\U List\\U Table如何生成它们,还在于处理操作请求的方式。

最佳做法是在处理动作后将用户重定向回不包含动作参数的URL,并在第二个请求上呈现页面,而不是在动作请求上呈现页面。

例如:

用户从这里开始:admin.php?page=wpml_plugin_logadmin.php?page=wpml_plugin_log&action=delete&id=123

  • 删除操作已处理,用户重定向回admin.php?page=wpml_plugin_log&delete_success=123
  • 如上所述,您还可以添加一些其他参数(delete_success) 重定向URL,以将已处理操作的状态传递给第二个请求。

    结束

    相关推荐