在插件中添加页面

时间:2011-07-08 16:05:11

标签: wordpress-plugin wordpress

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

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

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

我是一个使用Wordpress的完全菜鸟(主要是.NET开发人员,但有PHP经验),所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

很少有事情不清楚,但根据我的理解,我可以建议以下解决方案:

使用wordpress'init'操作来捕获发布的数据,例如

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可以是表单的唯一隐藏输入字段,这只是为了确认数据来自您的表单。 希望这可以解决您的问题。 :)

答案 1 :(得分:0)

您可以使用add_feed函数创建操作路径页面,编写与插件functions.php类似的内容或您定义wordpress操作的任何位置:

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

在你的action-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/