2011-07-08 43 views
1

我正在写我的第一个WordPress插件,需要添加一个处理表单的页面。我有一个简短的代码,可以将表单添加到任何页面。该表单需要发布到我可以处理数据的URL(保存到数据库并发送电子邮件)。在插件中添加页面

我最初在我的插件目录中添加了一个process.php文件,并发布到该文件中,该文件用于获取发布的数据,但我无法访问任何wordpress功能(我需要访问我创建的数据库表) 。

理想情况下,我想要一个像/ plugin-name/process这样的网址,我可以使用。我假设必须有一种方法来直接在我的主插件代码文件中的函数,但我似乎无法找到如何做到这一点。

我是一个完全noob与Wordpress(主要是一个.NET开发人员,但与PHP的经验),所以任何帮助,将不胜感激。

回答

3

几件事情并不清楚,但按我的理解,我可以建议如下解决方案:

使用WordPress“初始化”动作捕捉发布的数据,例如

add_action('init', 'ur_form_process_fun'); 

function ur_form_process_fun(){ 
if(isset($_POST['unique_hidden_field'])) { 
    // process form data here 
} 
} 

在上面的代码中ur_form_process_fun( )函数在wordpress的初始化阶段触发,而你的表单的动作应该是默认站点url action="<?php site_url()?>",这样提交的数据将会被发布到站点的基础url,并且它可以被init动作使用。

unique_hidden_field可以是您表单的唯一隐藏输入字段,这只是为了确认数据来自您的表单。 希望这可以解决你的问题。 :)

0

您可以使用add_feed函数来创建操作路径页面,写类似的东西在你的插件的functions.php或任何你定义你的WordPress操作:

add_action('init', function() { 
    add_feed('/plugin/form_id_action', function(){ 
     include 'your-action-file.php'); 
    }) 
}); 

在你 - 行动 - file.php你应该可以像往常一样使用WordPress的功能。

<form action="/pluging/form_id_action" id="form_id_action"> 
    ... 
</form> 

参考文献: https://codex.wordpress.org/Rewrite_API/add_feed https://www.pmg.com/blog/a-mostly-complete-guide-to-the-wordpress-rewrite-api/

相关问题