私は私のプラグイン関数にこのフォームを持っています:
<form method="get" action="" enctype="multipart/form-data">
<p class="submit">
<input type="hidden" name="do_it_hidden" value="run">
<input name="do_it" type="submit" class="button-primary" value="DO IT!">
</p>
</form>
そして私のコードの前の方にあるこのphp条件:
if (isset($_GET['do_it_hidden'])) {
// some code to execute here
} else {
// just show the form
<form method="get" action="" enctype="multipart/form-data">
<p class="submit">
<input type="hidden" name="do_it_hidden" value="run">
<input name="do_it" type="submit" class="button-primary" value="DO IT!">
</p>
</form>
}
しかし、ボタンをクリックした後、私はwp-admin/options-general.php?do_it_hidden=run&do_it=DO+IT
にリダイレクトされますが、これは私がやりたいことではありません。
クリックした後、私はただページをリロードして、取得条件がtrueかどうかを確認したいです。
どうやってするか?
編集:
問題は、ボタンをクリックした後、まったく別のページにリダイレクトされることです。私のプラグインはここにあります:options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php
しかしボタンをクリックするとここに私を投げます:options-general.php?do_it_hidden=run&do_it=DO+IT
これはうまくいくはずです
if (isset($_GET['action']) && 'do_it_hidden' == $_GET['action'] ) {
// some code to execute here
} else {
// just show the form
<form method="get" action="options-general.php">
<p class="submit">
<input type="hidden" name="action" value="do_it_hidden">
<input type="hidden" name="page" value="<?php echo wp_unslash( $_REQUEST['page'] ); ?>">
<input name="do_it" type="submit" class="button-primary" value="DO IT!">
</p>
</form>
}
解決しよう!GETがまったく機能していないことがわかりました。あなたはPOSTを使う必要があり、フォームアクションでこれをタイプする必要があります:
action="<?php admin_url('options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php'); ?>"
くそー! WP;)で簡単な作業をするのは難しいこともあります。
フォームハンドラでリダイレクトを使用します。
if (isset($_GET['do_it_hidden'])) {
// some code to execute here
wp_redirect( admin_url( "options-general.php" ), 303 );
exit;
}
その後、ユーザーはきれいなURLにリダイレクトされ、短いURLの変更にはほとんど気付きません。 URLの変更を完全に回避するには、POSTリクエストを使用します。
<form method="get" action="do_it.php" enctype="multipart/form-data">
フォームのアクション部分には、その隠しフォーム変数の処理を担当するphpファイルを含める必要があります。フォームが送信されると、その情報が指定したファイルに渡されます。空白のままにすると、現在表示しているページにポストバックされます。
例えば、一般的なオプションのフォームは管理者のoptions.phpに送られます。
<form method="post" action="options.php" enctype="multipart/form-data">
そのファイルを使用して投稿情報を処理し、ユーザーを表示ページにリダイレクトします。
wp_redirect( admin_url( 'options-general.php?updated=true' ) );
if (isset($_GET['do_it']) && $_GET['action'] =='do_it_hidden') {
// some code to execute here
} else {
// just show the form
<form method="get" action="general.php?page=<?php echo $_REQUEST['page']?>" enctype="multipart/form-data">
<p class="submit">
<input type="hidden" action="do_it_hidden" value="run">
<input name="do_it" type="submit" class="button-primary" value="DO IT!">
</p>
</form>
}