Contact Form 7 v4.8 にアップデートしたらフォーム送信後、矢印が回転したままになってしまったので原因調査
Contact Form 7 v4.8 にアップデートしたらフォーム送信後、矢印が回転したままになってしまったので原因調査

Contact Form 7 v4.8 にアップデートしたらフォーム送信後、矢印が回転したままになってしまったので原因調査

先日、自分が管理しているサイトのお問い合わせフォームが突然、送信できなくなる事態になりました。送信ボタンを押しても、矢印が回転するだけで、何も起きない状態です。フォームは有名プラグイン Contact Form 7 を使用していました。

送信後の状態

↑矢印が回転したままの状態になった時のgifアニメーションです。

上のアニメーションの様になにも進まなくなるので、とりあえず、何が原因なのか、調査してみることにしました。プラグインの更新履歴をみてみると、送信ができなくなったと気づいた日の前日に、Contact Form 7がv4.8にアップデートされていました。(プラグインは自動更新を設定している)

最初に試したこと

Contact Form 7 をv4.7にダウングレードしてみました。ダウングレードしてみると、フォームの送信ができるようになりました。とりあえずは送信できるようになりましたが、根本的に解決になっていない… 最新版になっても動作するようにしたいので、Contact Form 7 の作者様のWebサイトに行ってFAQを調べてみました。

矢印が回転したまま、何も起きない場合は、テーマやプラグインの衝突で起こることがあるとのこと。なるほど…

プラグインを停止

プラグインの衝突に原因があるかも?とのことなので、Contact Form 7 以外のプラグインを一度全部止めてみました。

plugin

しかし、全てのプラグインを停止してみましたが、送信できない症状は続いていましたorz
プラグインの衝突が原因ではないようなので、全てのプラグインを有効化しました。

fanctions.phpが原因か?

次に怪しいなと思ったのが、fanctions.phpに記載したコード…
とりあえず、1つずつコメントアウトして試していくと…

ビンゴ!!!

WP REST APIは使用しないので無効にするために記載していたコードが原因だったようです。
このコードはねんでぶろぐ様のサイトで紹介されていたものを使わして頂いていたのですが、ちゃんと例外設定ができるようになっていましたので、Contact Form 7 も例外設定するようにコードを追加してみました。

function nendebcom_deny_restapi_except_embed( $result, $wp_rest_server, $request ){

    $namespaces = $request->get_route();

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

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

ねんでぶろぐ様で紹介されているコードに、13から16行目の例外設定を追加しました。すると、無事フォームの送信が可能になりました。

今回はプラグインの自動アップデート後、突然プラグインが動作しなくなりびっくりしましたが、落ち着いて対処し、解決方法を見つけることができました。なかなかニッチなことかもしれませんが、もし誰かの参考になれば幸いです。


タグ :