Подтвердить что ты не робот

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

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

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

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

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

введите описание изображения здесь

4b9b3361

Ответ 1

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

Я исправил эту ошибку, обновив функцию 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`

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

Ответ 2

@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);

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

Ответ 3

Кто-то опубликовал на форуме 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.

Ответ 4

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

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

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

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

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

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

Ответ 5

Заметил, что код не передавался в функцию 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;
		},

Ответ 6

последнее исправление в декабре 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 и тему соответственно, так что это исправление должно работать нормально.

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

Ответ 7

для всех, кто приходит сюда из поиска 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;
    },