2011-07-08 8 views
1

私は最初のWordpressプラグインを作成していますので、フォームの処理を行うページを追加する必要があります。どのページにもフォームを追加するショートコードがあります。そのフォームはデータを処理できるURLに投稿する必要があります(DBに保存してメールを送信する)。プラグインでページを追加

私はプラグインディレクトリにprocess.phpファイルを追加して投稿しましたが、投稿されたデータを取得する機能はありますが、私は作成したデータベーステーブルにアクセスする必要があります。

理想的には、私が使用できる/ plugin-name/processのようなURLを持っていたいと思います。私はメインプラグインのコードファイルの中にその関数を直接持っていく方法が必要だと思っていますが、その方法を見つけることができないようです。

私はWordPress(主に.NET開発者ですが、PHPの経験があります)の完全なnoobですので、どんな助けにも感謝します。

答えて

3

いくつかは明らかではないですが、私の理解あたりとして、私は解決策の下に提案することができます:ポストされたデータをキャッチする

使用WordPressの初期化 'アクション、上記のコードur_form_process_funで例えば

add_action('init', 'ur_form_process_fun'); 

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

( )関数は、Wordpressの初期化段階でトリガーとあなたのフォームのアクションは、デフォルトのサイトのURL action="<?php site_url()?>"する必要があります、送信されたデータは、サイトのベースURLに投稿され、initアクションに利用できるようになります。

unique_hidden_fieldは、フォームの一意の非表示の入力フィールドにすることができます。これは、フォームからデータが送信されていることを確認するためのものです。 これがあなたの問題を解決するかもしれないことを願っています。 :)

0

あなたは、アクションのパスページを作成するadd_feed機能を使用し、あなたのプラグインのfunctions.phpにそれに似た何かを書くか、どこでも、あなたはあなたのワードプレスのアクション定義することができます。あなたの-アクション(Action)で

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/

関連する問題