Forms 使用表单数据在wordpress中执行自定义查询字符串

Forms 使用表单数据在wordpress中执行自定义查询字符串,forms,wordpress,postdata,Forms,Wordpress,Postdata,我在wordpress网站上有一张表格。在提交表格时,我想: 1捕获表单数据 2使用这些数据运行数据库查询 3处理结果并使用这些结果构造查询字符串 4将用户重定向到站点根目录+查询字符串 在WordPress之外,我会通过使表单action=my_query\u string\u constructor.php来解决这个问题,并在那里对post数据进行所有必要的处理。我曾考虑在WordPress中做一些类似的事情,让表单操作类似于single-my_query_string_constructo

我在wordpress网站上有一张表格。在提交表格时,我想:

1捕获表单数据

2使用这些数据运行数据库查询

3处理结果并使用这些结果构造查询字符串

4将用户重定向到站点根目录+查询字符串

在WordPress之外,我会通过使表单action=my_query\u string\u constructor.php来解决这个问题,并在那里对post数据进行所有必要的处理。我曾考虑在WordPress中做一些类似的事情,让表单操作类似于single-my_query_string_constructor_posts.php,但这感觉非常粗糙,我更希望有一个符合最佳实践的解决方案

我想确保我的解决方案是安全的,但我不确定使用nonce系统的最佳方式。我还不确定是否应该将数据库查询和查询字符串构造代码放在页面本身、functions.php或其他地方


我真的很感激你对最佳方法的建议,我不是要你为我写代码

最好的办法是创建一个简单的插件来处理数据,并理想地生成表单,这样您就可以轻松地处理nonce了

我将介绍插件处理表单数据保存和重定向所需的内容

add_action( 'wp_ajax_saveYourForm', 'saveYourForm' );
add_action( 'wp_ajax_nopriv_saveYourForm', 'saveYourForm' );

function saveYourForm()
{
    check_ajax_referer('yourFormNonce'); //comment this out if you're not using nonces
    global $wpdb;
    .... do your DB stuff here ....
    wp_redirect(add_query_arg('arg',$_POST['forminput'],site_url('yourpage.php')));
}
确保表单发布到wp admin/admin-ajax.php,并将一个操作字段设置为saveYourForm,以匹配add_操作调用的第一个参数

check\u ajax\u referer检查ajax调用的当前值

wp_重定向将处理重定向回您的站点。add_query_arg使用两个字符串或一个数组来处理要传递的查询参数,最后一个参数是要重定向到的URL

site_url将它们重定向到您的主站点url,并将“yourpage.php”传入其中,将它们发送到yoursite.com/yourpage.php

假设$u POST['forminput']是蓝色的,它们将被重定向到