我必须是管理员,使请求wp-admin/admin-post.php


Do I have to be admin to make requests to wp-admin/admin-post.php?

我开发了一个自定义插件,当我以admin身份登录时,它一切正常。

我的插件从插件创建的自定义表单中收集详细信息。当提交表单时,它向admin-post.php发送一个POST请求。这在登录时运行良好。

当我注销,并使用该网站作为一个普通用户,表单提交只是加载一个空白页面。

下面是我的代码:

add_action('admin_post_loan_app_form', function() {
    if(!isset($_POST['app_number']) || empty($_POST['app_number']))
    {
         redirectToFormWithError(ERROR_EMPTY_APP_NUMBER);
    }
    $_SESSION['lnloans']['app_number'] = $_POST['app_number'];
    $_SESSION['lnloans']['page'] = LOAN_DETAILS_FORM;
    redirectToForm();
});

我如何允许任何人发送post请求,而不仅仅是管理员?

确保您使用admin_post_nopriv_*作为您的post action?因为这是您作为未经身份验证的用户发布所需要做的。即:

add_action('admin_post_nopriv_loan_app_form', function() { […]

作为第二个解决方案,如果可能的话,考虑使用XML-RPC WordPress API来发布数据。