WordPress:在表单提交到admin-post.php后重定向到表单页面



我创建了我的第一个WordPress插件(我有很多编程经验,但这来自嵌入式软件世界(。它包括一个表单,呈现在前端。为了处理表单条目,我添加了一个针对admin-post.php的操作:

<form action="<?php echo esc_attr( admin_url( 'admin-post.php' ) ); ?>" method="post"> 

我为登录用户和未登录用户添加了挂钩,以评估提交的表单

add_action( 'admin_post_no1_remember_form_response', array( $this, 'no1_evaluate_remember_form' ) );
add_action( 'admin_post_nopriv_no1_remember_form_response', array( $this, 'no1_evaluate_remember_form' ) );

在对表单数据进行了一些检查、保护和处理后,我想回到表单所在的页面,但显示一些成功消息而不是表单。这很好,但我不知道(尽管我在谷歌上搜索了很多(如何重定向到提交表单的页面。在我的开发环境中,我使用了带有硬编码路径的wp_redirect函数:

wp_redirect(
esc_url_raw(
add_query_arg(
array(
'info'     => $form_eva_result,
'response' => $_POST,
),
home_url( 'index.php/test-shortcode-no1/' )  
)
)
);
exit;

这很好,但由于我想将表单(通过短代码(放在任何页面上,我需要找到一种方法来检索表单提交页面的正确URL。我知道使用AJAX提交表单数据可能是一种选择,但现在我想坚持POST方法(也用于教育目的:-(

有人能提出一种检索正确重定向目标的方法吗?

谢谢,Christian

可能您已经解决了问题,但解决方案可以使用_wp_http_referer值:

$url = $_POST['_wp_http_referer'];
wp_redirect(
esc_url_raw(
add_query_arg(
array(
'info'     => $form_eva_result,
'response' => $_POST,
),
home_url( $url )  
)
)
);
exit;

最新更新