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を修正します
目次
メールが送信できない状況
問い合わせ画面で送信ボタンを押すと図のようにくるくると回る表示が現れます。その後、待てど暮らせどこの状態から変わりません。
解決方法
プラグインの設定変更
functions.phpにコードを追加すれば直ります。
が、
ここでハマったのがfunctions.phpに追加すれば直ると思っていたこと
検索すると修正方法はfunctions.phpへのコード追加と出てきます。
今回追加するソースコードは無効にするプラグインより先に実行すると思っていました。色々と試して、そもそも追加コードが実行されていない!
ということで。。。
別のプラグインでREST APIを無効にしているならまず解除しましょう。
現時点(2019/8/19)でこのサイトのセキュリティはAll In One WP Securityのプラグインを使用しています。
WP Security -> Miscellaneous -> WP REST APIのチェックを外します。
このチェックを外すと。。。
「https://semiretired-lifestyle.com/wp-json/wp/v2/users」にアクセスするとユーザ名が漏れます。
これが嫌でREST APIを閉じてました。
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へ追加する方法を説明します。※他のテーマも同じだと思います。
- WordPressの【外観】を選択します。
- WordPressの【テーマエディタ】を選択します。
- 【functions.php】を開きます。
- ソースコードを最終行に貼り付けます。
- 【ファイルを更新】を選択します。
設定確認
設定は終わりましたので、メール送信できるか確認してみます。
無事、メールを送信することができました。
次にREST APIにアクセスしてみます。
「https://semiretired-lifestyle.com/wp-json/wp/v2/users」
無事エラーになっていますね。

今回、基本通さない/通したいものだけ記述してます。今後、基本通す/通したくないものだけ記述に変更するかもしれません。