私のサイトのすべてのページに、私はそれぞれのアドレスにEメールを送るコンタクトフォームを持っていました。このサイトでも私はフロントページの表示を静的ページに設定しました。
連絡フォームは基本的に自分自身に投稿し、成功した場合はユーザーを新しいページに移動します。それ以外の場合は連絡フォームに固定してエラーを表示します。しかし、ホームページ上では、どんなタイプのPOSTリクエストであっても、ページを投稿ページに設定します。これは空のPOSTリクエストになる可能性があるため、私には奇妙に思えますが、それでもユーザーは投稿ページに戻りますが、URLは変わりません。これは、ホームページにPOSTを実行した場合にのみ発生します。他のすべてのページは予想通りに動作します。
何か案は?
add_action( 'wp_head', 'process_contact_form' );
function process_contact_form() {
if( isset( $_POST['submit'] ) && $_POST['submit'] ) {
echo'test';
}
}
add_shortcode( 'mini-contact', 'get_mini_contact' );
function get_mini_contact( $atts = array() ) {
extract(shortcode_atts(array(
'title' => 'Contact US',
'button' => 'Submit',
'label' => 'Message us',
'subject' => 'Message'
), $atts));
$html = '';
$html .= '<section id="quick-contact-form" class="home-solution">';
$html .= '<div class="container">';
$html .= '<header>';
$html .= '<h2 class="aligncenter type--bottom-space">' . $title . '</h2>';
$html .= '</header>';
$html .= '
<form class="contact-form" method="post" action="">
<div class="row">
<div class="medium-5 columns">
<label>Name</label>
<input type="text" name="name" class="form-contact__text" />
</div>
<div class="medium-5 columns">
<label>E-mail</label>
<input type="text" name="email" class="form-contact__text" />
</div>
</div>
<div class="row">
<div class="medium-10 columns">
<label>Share your business problem today</label>
<textarea name="comment" rows="20" class="form-contact__textarea"></textarea>
</div>
</div>
<div class="row">
<div class="medium-10 columns">
<input type="submit" name="submit" value="' . $button . '" class="button expand">
</div>
</div>
<input type="hidden" name="subject" value="' . $subject . '">
</form>
';
$html .= '</div>';
$html .= '</section>';
return $html;
}
フォームを投稿するとき、あなたが入力名として 'name'を使った場合、投稿に問題があるようです。
変更してみてください。
<input type="text" name="name" class="form-contact__text" />
に:
<input type="text" name="the_name" class="form-contact__text" />
また、プラグインやテーマと競合する場合に備えて、送信ボタンにもっと一意の名前を付けることをお勧めします。それからprocess_contact_form()
関数でその送信を確認します。
これは少し古いかもしれませんが、この投稿は私が同様の問題を見つけるのを助けました。 input name = 'search'がある場合は、静的フロントページを再ロードする代わりにポストページもロードします。