プラグインの中に私は(action =属性を介して).phpファイルに送信する必要がある支払いフォームを持っています。これも私のプラグインに直接あります。いくつかの調査の結果、個々のプラグインファイルを呼び出すための「ワードプレスの方法」は、代わりにindex.phpで実際にカスタムクエリを使用することのようです。私は以下のコードでそうしました、そして、それは働いています、しかし、問題のコードは単にフォームを処理してそれからユーザーを確認ページにリダイレクトする必要がある、私は何も表示する必要はありません。今のところindex.phpテンプレートを実際にロードしているように見えますが、これは無駄に思えます。
私はこれについて正しく行っていますか?そうでない場合は、代わりにどのようにしたらよいでしょうか。
//Register our custom request hook
function tps_space_rental_query_vars($vars) {
$vars[] = 'tps-rent-space';
return $vars;
}
add_filter('query_vars', 'tps_space_rental_query_vars');
//This will allow us to process our payment form the wordpress way
function tps_payment_parse_request($wp) {
if (array_key_exists('tps-rent-space', $wp->query_vars)
&& $wp->query_vars['tps-rent-space'] == 'chargeform') {
// process the request, just testing for now
echo 'This request happened!';
}
}
add_action('parse_request', 'tps_payment_parse_request');
最も簡単な方法はinitアクションフックを使うことです
add_action("init", "your_form_handler_action");
function your_form_handler_action(){
if( isset( $_REQUEST["action"] ) && $_REQUEST["action"] == "your_action_name" ) {
echo "Response!!!";
}
}
WordPressには一般的なPOST/GETリクエストエンドポイントがあり、 admin_post_(action) を使用してコードをアクションにフックします。これはWordPressがAJAXリクエストを処理する方法と似ています。 URLを出力するにはadmin_url( 'admin-post.php' )
を使用してください。