MW WP FORMの送信遅延問題を解決!原因と対策を徹底解説

WordPressのフォームプラグイン「MW WP FORM」は、多くのサイトで導入されている人気プラグインですが、大量の問い合わせデータが蓄積されると送信が遅くなる問題が発生することがあります。

送信完了までに数十秒から数分かかることもあり、ユーザーエクスペリエンスの低下やフォーム離脱の原因となるため、非常に緊急性の高い事案です。

ちなみに、最初は別のお問い合わせフォームを作って動作させていました。

MW WP FORMの送信遅延の原因

MW WP FORMの送信遅延が発生する主な原因は、フォーム送信時にデータを保存する際の スラッグ(投稿名)生成処理の負荷 にあります。

具体的には、WordPressの wp_insert_post 関数内で、スラッグがユニークかどうかを確認するために 全問い合わせデータを検索し、重複を避ける処理 が実行されます。

しかし、問い合わせデータが数千件以上に達すると、この処理に時間がかかり、送信遅延の原因となります。

この問題は、問い合わせデータが増えれば増えるほど深刻化し、最終的には 送信が完了するまで数分かかる ようになることもあります。

MW WP FORMのデータはカスタム投稿タイプ mwf_xxx(xxxはフォームID)として保存されるため、このスラッグ生成プロセスの影響を大きく受けてしまうのです。

MW WP FORMの送信遅延を解消する方法

送信遅延の根本的な原因が スラッグ生成の処理負荷 にあるため、解決策として スラッグの生成方法を変更する のが最も効果的です。

スラッグの生成処理を ランダムな一意の値に変更することで、遅延を劇的に改善 できます。

手順1:functions.php にコードを追加する

function custom_mw_wp_form_slug( $override_slug, $slug, $post_ID, $post_status, $post_type ){
    if ($post_type == "mwf_xxx") { // xxx を対象のフォームIDに変更
        $override_slug = uniqid("mw_wp_form_"); // 送信遅延防止のため、一意のスラッグを作成
    }
    return $override_slug;
}
add_filter( 'pre_wp_unique_post_slug', 'custom_mw_wp_form_slug', 10, 5 );

コードのポイント

• $post_type == “mwf_xxx” の xxx 部分を 対象のフォームID に置き換えてください。

• uniqid(“mw_wp_form_”) を使用して、ランダムなスラッグを自動生成します。

• これにより、WordPressが問い合わせデータ全件を検索しなくても、一意なスラッグが割り当てられるため、処理速度が向上します。

手順2:複数のフォームに対応させる

1つのフォームだけでなく、 サイト内のすべてのMW WP FORMの送信遅延を解決したい場合 は、以下のコードを使用します。

function custom_mw_wp_form_slug_all( $override_slug, $slug, $post_ID, $post_status, $post_type ){
    if (strpos($post_type, "mwf_") === 0) { // mwf_で始まるカスタム投稿タイプを対象にする
        $override_slug = uniqid("mw_wp_form_"); // ランダムなスラッグを設定
    }
    return $override_slug;
}
add_filter( 'pre_wp_unique_post_slug', 'custom_mw_wp_form_slug_all', 10, 5 );

このコードの特徴

• strpos($post_type, “mwf_”) === 0 を使用することで、 すべてのMW WP FORMの問い合わせデータ に適用されます。

• フォームごとに個別対応する必要がないため、管理が容易になります。

• 大規模なサイトや複数の問い合わせフォームを運用しているサイトで特に有効です。

MW WP FORMのパフォーマンスを向上させる追加対策

スラッグ生成の最適化以外にも、MW WP FORMの動作を軽快にするための対策があります。

不要な問い合わせデータを定期的に削除

古い問い合わせデータが大量に蓄積されると、データベースの負荷が増加し、サイト全体の動作が遅くなる可能性があります。

定期的に不要な問い合わせデータを削除することで、データベースの最適化が可能です。

対策方法

• WordPressの管理画面から不要な問い合わせデータを手動削除

• WP-Optimize などのデータベース最適化プラグインを活用

まとめ

MW WP FORMの送信遅延問題は、 スラッグ生成時の処理負荷が原因 となっているため、スラッグをランダムに生成するコードを追加することで 劇的に改善 できます。

また、フォームのパフォーマンスを向上させるために、以下の対策も併用するとさらに効果的です。

スラッグ生成を最適化する(カスタムコード適用)

古い問い合わせデータを定期的に削除

キャッシュプラグインを適切に設定する

PHPのバージョンを最新にアップデート

この対策を導入すれば、MW WP FORMの送信速度が向上し、スムーズなフォーム送信を実現できます!

問い合わせフォームのレスポンスが改善され、ユーザーエクスペリエンスの向上にもつながるため、ぜひお試しください。

自分の備忘録も兼ねてブログにしておきます。