也许有点晚了,但我发现这一点时,我遇到了一些问题,所以我想我会把我的发现提供给未来的人。
我发现基本原则是有一个名为action
它的值是一个自定义集标识符。例如
<input name=\'action\' type="hidden" value=\'custom_form_submit\'>
使用此输入,并且窗体操作指向
admin-post.php
可以设置操作。我们使用
admin_post_custom_form_submit
.
为了使事情更复杂,我们可以使用wp_nonce_field
我认为这是一个基本的安全问题。基本上,它会添加一个随机的$\\u POST值。很公平。
接下来,我们要这样设置我们的操作:
add_action(\'admin_post_custom_form_submit\',\'our_custom_form_function\');
所以当有表格提交给
admin-post.php
动作值为
custom_form_submit
功能
our_custom_form_function
将被调用!:D
function our_custom_form_function(){
//print_r($_POST);
//you can access $_POST, $GET and $_REQUEST values here.
wp_redirect(admin_url(\'admin.php?page=your_custom_page_where_form_is\'));
//apparently when finished, die(); is required.
}
现在你说你得到了一张白纸。这是因为我们需要重定向回表单。我用了一个简单的
wp_redirect()
希望这有所帮助:)我将尝试找出如何进行验证并将错误返回到重定向表单。我想最简单的办法就是$_GET
在我们的页面上找到它的价值,但它不是很好,是吗?
我还发现,一旦提交$_POST
已清除!!DX这可能与重定向有关。我会用谷歌看看我能找到什么:d
希望这有所帮助:)
UPDATE
我做了更多的工作,并意识到返回值的唯一真正方法是使用$\\u GET变量。这样,您可以重新输入任何post值。只是别忘了使用
urlencode()
以确保包含特殊字符,如“@”等。
我有多个页面包含我正在处理的内容,所以我对不同的页面进行了两次不同的重定向,并包含了错误等等。他们在我的表格上方检查了它们。
另一个方便的功能。http_build_request()
可以将数组转换为“url安全”数组,以便通过$\\u GET请求等发送它们。