2011-07-08 87 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/

相關問題