Contact Form7のメール送信&表示のカスタマイズ
WordPressのお問い合わせフォームを設置しようと思いまして、こちらを使ってみました。
Contact Form 7 - WordPress のお問い合わせフォームプラグイン。シンプル、でも柔軟。
設置そのものはとても簡単です。プラグインDL→うp→有効化→ページ作る→フォームのコードをコピペで、完了です。
で、カスタマイズしてみたのでメモっておきます。
メールが届かない
画面上エラーになっていないけど全くメールが届かない場合があります。
このプラグインはメール送信にwp_mail()という関数を使います。PHP標準のmail()のラッパーでダブルバイト処理などをよしなにやってくれます。ただ、mail()は基本的にメールサーバーがあることを前提に動く関数の為、僕のローカル環境のようにメールサーバがない環境だと動きません。
メールサーバーを持っていないクライアントもいたりするし、GMailで送りたい人もいる、と。
というわけで、wordpressのwp_mail()をSMTP送信をするように変えてみました。下記プラグインをDLします。phpmailerのラッパーみたいです。
WordPress › Configure SMTP « WordPress Plugins
設定方法はすげー簡単なので割愛します。見ればわかる。Sender e-mailという項目はReturn-PathとFromにあたるものなので、ここは必ず入れましょう。Return-pathが無いとケータイに届かない場合があった気がしたので。
表示位置を変えたい
エラーとか完了メッセージとかの表示位置を変えるには、フォームの編集エリアの任意の位置に
<div class="wpcf7-response-output"></div>
を入れます。これで任意の位置に出ます。displayはnoneにしておいてね。
ただ、このままだと2箇所表示されますので、ちょっとカスタマイズします。contact-form-7\includes\classes.phpを開いて、66行目あたりのコードをコメントアウトするだけ。
//contact-form-7\includes\class.php <?php function form_html() { $form = '<div class="wpcf7" id="' . $this->unit_tag . '">'; $url = wpcf7_get_request_uri(); if ( $frag = strstr( $url, '#' ) ) $url = substr( $url, 0, -strlen( $frag ) ); $url .= '#' . $this->unit_tag; $url = apply_filters( 'wpcf7_form_action_url', $url ); $url = esc_url_raw( $url ); $enctype = apply_filters( 'wpcf7_form_enctype', '' ); $form .= '<form action="' . $url . '" method="post" class="wpcf7-form"' . $enctype . '>' . "\n"; $form .= '<div style="display: none;">' . "\n"; $form .= '<input type="hidden" name="_wpcf7" value="' . esc_attr( $this->id ) . '" />' . "\n"; $form .= '<input type="hidden" name="_wpcf7_version" value="' . esc_attr( WPCF7_VERSION ) . '" />' . "\n"; $form .= '<input type="hidden" name="_wpcf7_unit_tag" value="' . esc_attr( $this->unit_tag ) . '" />' . "\n"; $form .= '</div>' . "\n"; $form .= $this->form_elements(); if ( ! $this->responses_count ) //コメントアウトする //$form .= $this->form_response_output(); $form .= '</form>'; $form .= '</div>'; return $form; }
formという文字列の最後に表示領域をくっつけているので、そいつをやめさせればいいだけです。
いじょ。