并在后端处理: add_action( 'admin_post_some-action',-6ren">
gpt4 book ai didi

WordPress。表单验证失败后从admin-post.php获取数据

转载 作者:行者123 更新时间:2023-12-02 23:21:31 26 4
gpt4 key购买 nike

我将表单提交到 admin-post.php:

 <form action="<?php echo admin_url('admin-post.php') ?>" method="post">
<input type="hidden" name="action" value="some-action">
<input type="text" name="somename">
</form>

并在后端处理:

 add_action( 'admin_post_some-action', function () {

$isValid = // SOME VALIDATION HERE
if($isValid){
wp_redirect('next-step'); //redirect to the next form
return;
}

wp_redirect('current-step'); //redirect back
});

如果表单无效,我想重定向回包含填充数据并突出显示无效输入的表单。问题是 wp_redirect 根本不返回任何数据。因此,用户将需要再次手动填写所有数据,甚至不知道 wjat 是错误的。我找到了两个解决方案:

  1. 在 wp_redirect 中使用 get param - 它可能只适合一次输入,但效果会很糟糕,尤其是对于文件和密码输入。
  2. 使用 $_SESSION - 它好一点,但实现此方法仍然很粗糙。
  3. 使用curl - 对于 WP 来说这是非常肮脏的解决方案

我想应该有一些简单的默认方法来处理这个问题,因为这是非常重要的事情。有什么想法吗?

最佳答案

如果用户已登录,请使用 transient 并将其设置为约 60 秒过期,在 admin_post 操作中设置数据,然后在表单页面中检索它们。我仍在寻找一个不错的解决方案,该解决方案不涉及通过在表单中​​设置 action="" 而不使用 admin_post 操作将表单发布回自身。

关于WordPress。表单验证失败后从admin-post.php获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com