MW WP FORMの送信時に遅延。問い合わせデータが大量すぎるのが原因。問題解消。

MW WP FORMはWordpressのフォームプラグインでは逸材で、いまや欠かせないプラグインになっています。
ですが、問い合わせデータが大量になってくると、フォームの送信時に遅延が発生して、数分もの時間を要するようになってしまうことも。
原因はこちらの「お問い合わせ内容データベース保存時にslug生成処理の時間が掛かってしまう」にある通り。
https://github.com/inc2734/mw-wp-form/issues/72
問い合わせデータを書き込むときに、wp_insert_postという関数内で、スラッグをユニークなものにしようと、全問い合わせデータを見に行って、確かめるみたいなことをしてから生成しているようだ。
大切な作業なのかもしれないが、フォーム送信時には必要がないのでやらなくていい作業。
あらかじめ生成しておいてあげればよいということなので、上記の記事にあるようにpost_nameを指定してあげればいいのだけれど、プラグインを直に編集するのは野暮というもの。

そこでフィルターの登場だ。
こんな感じでfunctions.phpに記載すれば遅延を回避できる。

function org_mw_wp_form_create_slug( $override_slug, $slug, $post_ID, $post_status, $post_type ){
if($post_type == "mwf_xxx"){//mwf_のあとにフォームIDを記入
$override_slug = uniqid("mw_wp_form_");// 送信遅延防止のため、Post_nameをランダムで作成;
}
return $override_slug;
}
add_filter( 'pre_wp_unique_post_slug', 'org_mw_wp_form_create_slug', 10, 5 );

xxxのところをフォームのIDへ書き換えるのを忘れないように。
それか、もうめんどくさいときには、MW WP FORMの問い合わせデータだったらなんでもslugを適当に作る、ってことであればこれでもOK。

function org_mw_wp_form_create_slug( $override_slug, $slug, $post_ID, $post_status, $post_type ){
if(strpos($post_type,"mwf_") == 0){
$override_slug = uniqid("mw_wp_form_");// 送信遅延防止のため、Post_nameをランダムで作成;
}
return $override_slug;
}
add_filter( 'pre_wp_unique_post_slug', 'org_mw_wp_form_create_slug', 10, 5 );

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA