如何从前端窗体调用插件函数

时间:2014-06-14 作者:Varun Kumar

我有一个页面模板,它有一个表单,还有3个输入字段和一个提交按钮。我在插件中编写了一个函数,可以在数据库中插入检索到的值。我试图弄清楚表单的action属性应该写些什么,这样当用户单击submit按钮时,函数就可以执行了?

2 个回复
最合适的回答,由SO网友:Sisir 整理而成

可通过以下方式输出表单Shortcode API.

表单操作上应该设置什么<form action="">. 确保避免将保留名称用作表单字段名称,如namep. 否则,您的表单提交将命中404.

我们如何验证或处理表单

钩入template_redirect.

add_action( \'template_redirect\', \'wpse149613_form_process\' );

function wpse149613_form_process(){
    if(!isset($_POST[\'submit\'])) // assuming you\'re using POST and submit button name is \'submit\'
        return;

    // Validate the form, verify nonce

    // process form

}
希望它有意义。这就是我通常处理表单提交的方式。

SO网友:José Manuel Blasco

这是another post! 这可以帮助你。

基本上,您需要指定admin_url( \'admin-post.php\' ) 作为窗体的操作,并放置指定自定义操作的隐藏输入。

然后,您可以在插件中注册该操作,以便处理表单信息。

示例:

<form action="<?=admin_url( \'admin-post.php\' ) ?>" method="POST">
    <!-- your inputs -->
    <input type="hidden" name="action" value="myplugin_mycustomaction"/>
    <input type="submit" value="Send"/>
</form>
然后在PHP插件中可以放置以这种方式处理的函数

add_action( \'admin_post_nopriv_myplugin_mycustomaction\',array( "class_that_owns_that_function", \'yourmethod\' ) );

public function yourmethod()
{
    // Do what you want with $_POST variables
}
如果该方法位于同一类中,则可以使用$this,而不是函数的名称。

结束

相关推荐

Custom Post Types in plugins?

我一直在想这个。在我现在看到的大多数插件中,它们看起来像CPT,但没有“已发布”链接。他们也不担任职务。它们只是停留在仪表板中的插件,页面和列列表顶部有“添加新”链接,当您单击“编辑”时,可以像在任何其他CPT中一样编辑项目。所以我想知道他们是否是CPT?如果是的话,有没有关于这方面的教程?我正在考虑为我的网站创建一个插件,我想要的是构建一个插件,我可以“添加新项目”,并保存项目(并且可以编辑)。我可以通过短代码调用项目。我知道如何在函数中创建CPT。php和我一直在阅读关于基本插件创建的内容。我似乎找不