我将表单提交给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是错误的。我找到了2个解决方案:
我想应该有一些简单的默认方式来处理这个问题,因为它非常重要。有什么想法吗?
答案 0 :(得分:1)
如果用户已登录并将其设置为过期约60秒,则使用瞬变,在admin_post操作中设置数据,然后在表单页面中检索它们。我还在寻找一个不错的解决方案,它不会通过在表单中设置action=""
而不使用admin_post
操作将表单发回给自己。
答案 1 :(得分:-1)
是否简单&#39;或者&#39;很难&#39;编程,需要给机器指令。想想如何用纯PHP完成它。登录失败后,您基本上被重定向到另一个页面。由于HTTP是无状态的,因此您可以将数据存储在服务器端(数据库,会话,文件......)中,也可以传递URL中的信息。 WordPress不会自动启动会话,以便您存储最后一次表单提交。