WordPress

Contact Form 7でメールが送信できない場合の対処

 

Contact Form 7でメールが送信できない場合の対処法です。

今回対処を行うバージョンは以下になります。

  • Contact Form 7 v5.1.4
  • Contact Form 7 add confirm v5.1
  • WordPress v5.2.2–ja

ポイント

  • Rest APIを無効にしているプラグインは有効にしましょう
  • その上でfunctions.phpを修正します

 

メールが送信できない状況

問い合わせ画面で送信ボタンを押すと図のようにくるくると回る表示が現れます。その後、待てど暮らせどこの状態から変わりません。

Contact Form 7メール送信

 

解決方法

プラグインの設定変更

functions.phpにコードを追加すれば直ります。
が、

ここでハマったのがfunctions.phpに追加すれば直ると思っていたこと

検索すると修正方法はfunctions.phpへのコード追加と出てきます。

今回追加するソースコードは無効にするプラグインより先に実行すると思っていました。色々と試して、そもそも追加コードが実行されていない!

ということで。。。

 

別のプラグインでREST APIを無効にしているならまず解除しましょう。
現時点(2019/8/19)でこのサイトのセキュリティはAll In One WP Securityのプラグインを使用しています。

WP Security -> Miscellaneous -> WP REST APIのチェックを外します

All In One WP Security

 

このチェックを外すと。。。
「https://semiretired-lifestyle.com/wp-json/wp/v2/users」にアクセスするとユーザ名が漏れます
これが嫌でREST APIを閉じてました。
/wp-json/wp/v2/users

 

functions.phpの修正

次にfunctions.phpを修正します。下記ソースコードをfunctions.phpに追加します。

不安な方は修正前にバックアップを取っておきましょう。

 

  • Contact Form 7の場合はREST APIを通します。
  • それ以外の場合は認証エラーを返します。
function deny_restapi_exclude( $result, $wp_rest_server, $request ) {

    $route = $request->get_route();

    //contact form 7
    if( strpos( $route, 'contact-form-7/' ) === 1 ) {
        return $result;
    }

    return new WP_Error( 'rest_disabled', __( 'The WordPress REST API has been disabled.' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'deny_restapi_exclude', 10, 3 );

 

 

このサイトはAffinger5の子テーマを使用しています。その場合のfunctions.phpへ追加する方法を説明します。※他のテーマも同じだと思います。

  1. WordPressの【外観】を選択します。
  2. WordPressの【テーマエディタ】を選択します。
  3. 【functions.php】を開きます。
  4. ソースコードを最終行に貼り付けます
  5. 【ファイルを更新】を選択します。

functions.php

 

設定確認

設定は終わりましたので、メール送信できるか確認してみます。
メール送信確認

無事、メールを送信することができました。

 

次にREST APIにアクセスしてみます。

「https://semiretired-lifestyle.com/wp-json/wp/v2/users」
REST APIアクセス

無事エラーになっていますね。

 

 

REST APIは便利なので有効にはしときたいです。
今回、基本通さない/通したいものだけ記述してます。今後、基本通す/通したくないものだけ記述に変更するかもしれません。

 

-WordPress
-

© 2020 40代サラリーマンがセミリタイアを目指す