barba.js 2.x(v2)でContact Form 7を正常に動作させる方法
最近案件で、barba.jsという非同期で画面遷移できるフレームワークを利用してみました。
結構いまさらなんですが、簡単に導入できて、めちゃくちゃスムーズにページが切り替わって感動しました。
動作がめちゃサクサクなので、これからどんどん取りいれて行きたいです。
WordPressとも相性がいいのですが、これどうやって動かすんだろう?というのがちょいちょいあって、
検索しても日本語サイトだと、バージョン1系の情報しか出てこなかったのでまとめておきます。
今回は、barba.js 2.x(v2)を利用したときに、Contact Form 7をきちんと動作させる方法です。
// barba.jsのbeforeEnterのタイミングで実行する
barba.init({
transitions: [{
beforeEnter({ next }) {
contactForm7Run(next);
}
}]
});
// Contact Form 7を正常動作させるための関数
function contactForm7Run(next) {
var cfSelector = 'div.wpcf7 > form';
var cfForms = $(next.container).find(cfSelector);
if (cfForms.length) {
$(cfSelector).each(function() {
var $form = $(this);
wpcf7.init( $form[0] );
});
}
}
beforeEnterのタイミングで、Contact Form 7のinit関数を実行すると、正常に動作するようになりました。
ちなみに、barba.jsのissue内での回答を参考にした(コピペした)ので、以下にリンクを載せておきます。
https://github.com/barbajs/barba/issues/122#issuecomment-809281869