Php 如何处理POST请求

Php 如何处理POST请求,php,wordpress,Php,Wordpress,我来自一个MVC世界,这对我来说很难理解。我正试图找出wordpress处理post请求的方式。我在网上查了一下,发现我应该使用add_action和一个在我的主题的functions.php中定义的函数,但是我不知道如何指定这个函数应该在哪个uri上执行 例如,我想在blog.com/handle_post?function=a和blog.com/handle_post?function=b的各自URL上执行函数a和b-我认为如果$\u GET['function']等于我当前使用的函数,但这

我来自一个MVC世界,这对我来说很难理解。我正试图找出wordpress处理post请求的方式。我在网上查了一下,发现我应该使用add_action和一个在我的主题的functions.php中定义的函数,但是我不知道如何指定这个函数应该在哪个uri上执行

例如,我想在blog.com/handle_post?function=a和blog.com/handle_post?function=b的各自URL上执行函数a和b-我认为如果$\u GET['function']等于我当前使用的函数,但这没有意义-首先开始执行该函数,如果该函数不正确,则退出-这不正确吗

还有关于URL的handle_post部分,我应该在哪里定义它

在MVC应用程序中,url通常类似于site.com/controller/method/data,它将在url中指定的控制器上调用方法。wordpress的情况并非如此,我正试图找出如何在blog.com/handle_post上为帖子请求创建一个资源,这样我就不会得到404 not found。当然,我可以在博客的根目录中创建一个文件并指向该目录,但这样我的脚本中就不会有wordpress环境—常量、函数等。

您可以使用通用钩子捕获请求并处理它。假设您将表单提交到它所在的页面,其中隐藏的输入有助于识别要调用的函数:

<form method="post" action="">
  <input type="hidden" name="action" value="process_my_form" />
  <!-- your form inputs here... -->
</form>
然后,在模板中,如果输入无效,您可以检查$\u会话['my\u form\u error'],以显示错误消息

请注意,如果有一天您需要在独立脚本中包含wordpress功能,您可以在WP-config.php中包含WP核心:


否决票是怎么回事?嗯,缺乏研究effort@RahilWazir你一定是在开玩笑吧,我已经花了两个多小时在这上面了…….Wordpress文档对我来说太糟糕了-从来没有这样的例子。请提供更多关于你到底想实现什么的细节,特别是关于POST数据来源的细节。哇,是我一个人,还是这种糟糕的代码设计?谢谢你的回答,特别是最后一部分,我认为这对我来说非常有价值!
function process_my_form() {
    // Check if there is any post data and if it comes from our form
    if(empty($_POST) || !isset($_POST['action']) || $_POST['action'] != 'process_my_form') {
        return;
    }

    // Check if inputs submitted are valid
    if(!isset($_POST['my_field']) || empty($_POST['my_field'])) {
        $_SESSION['my_form_error'] = __('Invalid input');
        return;
    }

    // If all data are valid, process your form, then redirect to whatever with :
    wp_redirect(home_url() . '/my-page-to-redirect/');
}
add_action('init', 'process_my_form');
require_once(getcwd() . '/wp-config.php');