Контактная форма 7 выдает ошибку "wpcf7.initForm не является функцией" при загрузке страницы через AJAX (smoothstate.js)

Я пытаюсь реализовать контактную форму 7 на моем WordPress-сайте с smoothstate.js. Контактная форма отлично работает, когда страница, на которой она используется, загружается напрямую. Однако, если страница загружается через AJAX, появляется ошибка "wpcf7.initForm не является функцией".

Я не гений в AJAX, но я подумал о том, чтобы повторно инициализировать функцию AJAX onAfter. Я попытался это с помощью wpcf7InitForm(); но все равно не повезло.

Любая помощь по этой теме будет принята с благодарностью!

Вот мой текущий код AJAX:

  //SmoothState Page Transitions

  $(function(){
    'use strict';
    var $page = $('#main'),
        options = {
          debug: true,
          prefetch: true,
          onStart: {
            duration:  800, // Duration of our animation
            render: function ($container) {
              // Add your CSS animation reversing class

              $container.addClass('is-exiting');

              // Restart your animation
              smoothState.restartCSSAnimations();
            }
          },
          onReady: {
                duration: 0,
                render: function($container, $newContent) {
                    // Remove your CSS animation reversing class
                    $container.addClass('is-loaded');

                    setTimeout(function(){
                      $container.addClass('unload');
                    }, 600);

                    setTimeout(function(){
                      $container.removeClass('is-loaded unload');
                    }, 900);


                    // Inject the new content
                    $container.html($newContent);
                }
            },
            onAfter: function($container) {
              $container.removeClass('is-exiting');
               $('div.wpcf7 > form').wpcf7InitForm();
               $(window).data('plugin_stellar').refresh();
            }
        },
        smoothState = $("#main").smoothState(options).data("smoothState");
      });

1 ответ

Решение

В версии 4.8 была изменена контактная форма 7, которая избавилась от jquery.form.js, поэтому функция wpcf7InitForm() больше не работает. Однако новая функция init была возвращена в v4.8.1

wpcf7.initForm

Используйте эту функцию вместо:

function initContactForm() {
 $( 'div.wpcf7 > form' ).each( function() {
  var $form = $( this );
  wpcf7.initForm( $form );
  if ( wpcf7.cached ) {
   wpcf7.refill( $form );
  }
 });
}

Позвони в onAfter и это должно решить вашу проблему.

Вот обсуждение на форуме поддержки Контактной формы 7: https://wordpress.org/support/topic/init-function-wpcf7initform/

Другие вопросы по тегам