2016-05-07 4 views
3

Мой хостинг-провайдер автоматически обновлялся до версии 4.5 и приводил к ошибке с плагином Visual Composer.Ошибка плагина после обновления Wordpress

Я прочитал эти посты: Plugin throwing TypeError after Wordpress 4.5 update

Visual composer doesn't load and gives TypeError: _.template(...).trim is not a function

Uncaught TypeError: $template.get is not a function

И заменил функцию html2element с поставкой. Однако, так как многие люди прокомментировали эти посты, я получаю новую ошибку:

composer-view.js?ver=4.6.1:139 Uncaught TypeError: Cannot read property 'attributes' of undefined 

Вот моя функция:

html2element: function(html) { 
      var $template, attributes = {}, 
       template = html; 
      $template = $(template(this.model.toJSON()).trim()), _.each($template.get(0).attributes, function(attr) { 
       attributes[attr.name] = attr.value 
      }), this.$el.attr(attributes).html($template.html()), this.setContent(), this.renderContent() 
     }, 

кажется ошибка, приходит из этой линии:

$template.get(0).attributes 

Кто-нибудь понял, как это исправить?

Спасибо за вашу помощь

ответ

17

была такая же проблема с 4.5 обновление и попытался все, что я нашел, но все еще не работает.

Наконец-то я заменил мою тему визуальным композиционным плагином (v4.7 что-то) недавним (4.11.2, google js_composer.zip).

Я просто заменил весь контент каталога, он отлично работает.

+0

Работал отлично –

+0

Спасибо, это работает – Cagdas

+0

вы спасатель жизни! – Amir

4

Грэма, привет

Я думаю, что проблема не в JQuery, но подчеркивание, что использование в js_composer.

В метод визуализации пасс неправильный объект HTML для метода html2element как это:

this.html2element(_.template($shortcode_template_el.html(), 
      this.model.toJSON(), 
      vc.templateOptions.default)); 

Но этот код отправить html2element метод HTML объект как функции, которые не имеют каких-либо свойств или что-то еще. Это происходит из-за того, что функция _.template из библиотеки подчеркивания не отображает первый аргумент arg (html-шаблон) до того, как второй arg не имеет допустимой переменной для первого arg.

На мой взгляд, чтобы решить эту проблему, нужно сделать это:

this.html2element(_.template($shortcode_template_el.html())); 

Это 2 метода визуализации и html2element https://gist.github.com/maximspokoiny/34ad60ad90944f8a80c6fc093873a807/9fb041d2b12249fe4391f986f4e7e6a08f57c6b3#file-gistfile1-txt

я с помощью js_composer 4.7.4 и 4.5.2 WordPress и эта проблема решить.

Спасибо!

ОБНОВЛЕНО: К сожалению, в html2element нужно слишком одно изменение, от:

  if (_.isString(html)) { 
      this.template = _.template(html); 
      $template = $(this.template(this.model.toJSON(), vc.templateOptions.default).trim()); 
     } else { 
      this.template = html; 
      $template = html; 
     } 

к:

  if (_.isString(html)) { 
      this.template = _.template(html); 
      $template = $(this.template(this.model.toJSON(), vc.templateOptions.default).trim()); 
     } else { 
      this.template = html; 
      $template = $(this.template(this.model.toJSON(), vc.templateOptions.default).trim()); 
     } 
+2

Это работает только «немного». Вы можете редактировать элементы, но не добавлять их. – bestprogrammerintheworld