Uncaught TypeError: $ template.get не является функцией

33

Я получаю эту ошибку в WordPress, когда я использую плагин под названием WpBakery Visual Composer.

Я использую последнюю версию WordPress (4.5), используя последнюю версию Google Chrome, и все плагины обновляются. Кажется, я не могу добавить какие-либо элементы или шаблоны с помощью Visual Composer.

Может кто-нибудь помочь мне или рассказать мне, что может быть, и как я могу исправить эту ошибку.

Ошибка, которую я получаю:

Изображение 205

  • 1
    что является результатом консоли ($ template)?
  • 0
    Я отредактировал вопрос и добавил результат.
Показать ещё 4 комментария

7 ответов

82

Пожалуйста, см. мой ответ здесь.

Я исправил эту ошибку, обновив функцию html2element до:

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()
    },

in /wp-content/plugins/js_composer/assets/js/backend/composer-view.js

или в wp-content/plugins/js_composer/assets/js/dist/backend.min.js`

Надеюсь, это сработает для вас!

  • 6
    Не удалось прочитать свойство 'attribute' undefined. Ошибка, возникшая после использования приведенного выше кода.
  • 7
    Это только заставило это загружаться. Но при попытке добавить новый элемент на страницу проблема все еще существует. Ошибка типа: $ template.get (...) не определена
Показать ещё 12 комментариев
16

@Sorin Haidau

Привет, ребята, я использую тему Astra. Это исправление работает на 99,9%. Для некоторых это только останавливает вращающееся колесо, но как только страница загружает визуальный композитор, нет.

Я немного изменил этот код (который теперь размещен повсюду)

Оригинальный код темы Astra здесь (composer-view.js)

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

Код, который работает:

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()
},

Основное отличие находится здесь (по сравнению с исходным кодом)

}); this.$el.attr

Вместо исходной запятой есть точка с запятой:):

}), this.$el.attr

Приветствия людей:)

Обновление: это зафиксировало около 19 из 20 сайтов, которые у меня были с темой astra с той же ошибкой, что упоминалось выше... все, кроме одного сайта.

У меня была эта ошибка после того, как наконец появился визуальный композитор (отсутствует половина элементов дизайна)

Uncaught Error: Syntax error, unrecognized expression: .ui-tabs-nav [href=#tab-1415196282-1-8]

Я исправил это, обновив строку 552 композиции-custom-views.js:

$('.ui-tabs-nav [href="#tab-' + params.tab_id + '"]').text(params.title);

И вуаля все теперь работает. Мне жаль, если он не работает для всех тем, попробуйте использовать код, упомянутый выше. Если это не сработает, попробуйте мои решения:)

  • 0
    composer-view.js? ver = 4.7.4: 142 Uncaught TypeError: Невозможно прочитать «атрибуты» свойства undefined: /
  • 0
    Я пропустил последнюю запятую в конце, обновил свой код. Если вы не видели это и не исправили это ... извините за это. Может быть, это не то, что нужно для вашей темы.
Показать ещё 1 комментарий
9

Кто-то опубликовал на форуме WordPress это решение, которое сработало для меня.

Замените функцию html2element в /wp-content/plugins/js_composer/assets/js/backend/composer-view.js следующим текстом.

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()
        },

Изменить: мне пришлось сделать эту замену второй раз при разных обстоятельствах, и она не начала работать до тех пор, пока я не отключился, а затем снова включил плагин Visual Composer и надстройку Ultimate Visual Composer.

  • 0
    Подтвердил работу. +1
  • 2
    Столкнулся с проблемой с «атрибутом», не определенным при добавлении новых элементов с помощью всплывающего окна добавления элемента VC: /
Показать ещё 3 комментария
2

Смешная вещь... мой номер версии визуального композитора был намного выше последнего обновления (4.8. *).

В любом случае... У меня была такая же проблема, и в предыдущих ответах не было полностью решить мои проблемы, поэтому я решил попробовать и купить новую копию плагина. Это получилось хорошо.

Теперь я могу подтвердить, что версия 4.12.1 Visual Composer работает с WordPress 4.6.1 без ошибок.

Также обратите внимание на это:

В последней версии Visual Composer нет такой директории, как backend или такой файл с именем composer-view.js.

PS. Использование этих графических дизайнеров страниц всасывает ***.

  • 0
    Я также могу рекомендовать обновление до последней версии. Я помню, как сталкивался с этими проблемами JavaScript еще в мае, и когда я проверял сайт поддержки VC, казалось, что автор отказался от продукта, поскольку было множество обращений в службу поддержки с упоминанием проблем JavaScript, а не одного ответа от автора. Как и многие другие, я применил один из вышеперечисленных хаков, который некоторое время исправлял ситуацию, но две недели назад он снова сломался. Поэтому я решил приобрести последнюю версию после прочтения этого ответа и вуаля! Плагин теперь работает нормально. Кроме того, он значительно улучшен, поэтому стоит вложений.
  • 0
    Ваше право, то же самое здесь, скачал последнюю версию, и это работает. Получил v5.3 сейчас
1

Заметил, что код не передавался в функцию html2element, но существовал в функции, вызывающей его (render)

Следующий код полностью исправил мои проблемы, я могу загрузить страницу, добавить, клонировать, удалить и т.д.

render: function () {
			var $shortcode_template_el = $( '#vc_shortcode-template-' + this.model.get( 'shortcode' ) );
			if ( $shortcode_template_el.is( 'script' ) ) {
				var newHtmlCode =  _.template( $shortcode_template_el.html(),
												this.model.toJSON(),
												vc.templateOptions.default );
				if(!_.isString(newHtmlCode)){
					newHtmlCode = $shortcode_template_el.html();
				}
				this.html2element( newHtmlCode );
			} else {
				var params = this.model.get( 'params' );
				$.ajax( {
					type: 'POST',
					url: window.ajaxurl,
					data: {
						action: 'wpb_get_element_backend_html',
						data_element: this.model.get( 'shortcode' ),
						data_width: _.isUndefined( params.width ) ? '1/1' : params.width,
						_vcnonce: window.vcAdminNonce
					},
					dataType: 'html',
					context: this
				} ).done( function ( html ) {
					this.html2element( html );
				} );
			}
			this.model.view = this;
			this.$controls_buttons = this.$el.find( '.vc_controls > :first' );
			return this;
		},
0

последнее исправление в декабре 2016 года, для Visual Compoder fix это,

html2element:function(html){var $template,attributes={},template=vc.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 = vc.template(html); в фактическом коде. это быстрое исправление в последней версии, совместимое с последним WPordpress.

Не забудьте обновить Wordpress и тему соответственно, так что это исправление должно работать нормально.

спасибо и счастливое кодирование

-1

для всех, кто приходит сюда из поиска Google: после изменения функции html2element, если у вас есть эта ошибка Невозможно прочитать атрибуты свойств ' update render: функция ниже кода

render: function () {
        var $shortcode_template_el = $( '#vc_shortcode-template-' + this.model.get( 'shortcode' ) );
        if ( $shortcode_template_el.is( 'script' ) ) {
            var newHtmlCode =  _.template( $shortcode_template_el.html(),
                                            this.model.toJSON(),
                                            vc.templateOptions.default );
            if(!_.isString(newHtmlCode)){
                newHtmlCode = $shortcode_template_el.html();
            }
            this.html2element( newHtmlCode );
        } else {
            var params = this.model.get( 'params' );
            $.ajax( {
                type: 'POST',
                url: window.ajaxurl,
                data: {
                    action: 'wpb_get_element_backend_html',
                    data_element: this.model.get( 'shortcode' ),
                    data_width: _.isUndefined( params.width ) ? '1/1' : params.width,
                    _vcnonce: window.vcAdminNonce
                },
                dataType: 'html',
                context: this
            } ).done( function ( html ) {
                this.html2element( html );
            } );
        }
        this.model.view = this;
        this.$controls_buttons = this.$el.find( '.vc_controls > :first' );
        return this;
    },

Ещё вопросы

Сообщество Overcoder
Наверх
Меню