web-dev-qa-db-ja.com

Wordpressでカスタムフォームを処理して別のページに送信する方法

PHPでは、random.phpファイルと同じアクションを入力してデータを処理することができますが、Wordpressではカスタムテンプレートを使用して既存のページを使用してフォームを送信することができます。あるページにフォームを送信すると、ユーザーは入力されたすべての資格情報を使用したままWordPressで別のページにリダイレクトされますか。

1
Limpuls
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<input type="hidden" name="action" value="your_action_name">

あなたのフォームにこれらを追加してください。 admin-post.phpがあなたのフォームを処理する場所。その場合、あなたが提供するyour_action_nameの値に基づいて、アクションフックが関与します。たとえば、テーマのfunctions.phpやプラグインに次のようなフックを追加したとしましょう。

add_action( 'admin_post_nopriv_your_action_name', 'your_function_to_process_form' );

ログインしていないユーザーの場合

function your_function_to_process_form(){
// process your form here
}

と呼ばれます。そこからあなたのフォームを処理することができます。ログインしているユーザーのためにあなたはあなたの行動をadmin_post_your_action_nameからadmin_post_nopriv_your_action_nameに改名する必要があります。 admin_post_またはadmin_post_nopriv_がadmin-post.phpでdo_action適切なアクションに利用可能であることを忘れないでください。 admin_post_nopriv_またはadmin_post_の最後に追加したものはすべてアクションフックを作成します。それはadd_action()によって実装される必要があります。隠しアクションとしてcontactformを渡すと、アクションフックはadmin_post_nopriv_contactformまたはadmin_post_contactform、あるいはその両方になります。

1
user119247