programing

Uncaught Type Error: $template.get은 함수가 아닙니다.

i4 2023. 3. 27. 21:00
반응형

Uncaught Type Error: $template.get은 함수가 아닙니다.

WpBakery Visual Composer라는 플러그인을 사용하면 WordPress에서 이 오류가 발생합니다.

Google Chrome 최신 버전을 사용하여 WordPress(4.5)를 사용하고 있으며 모든 플러그인이 업데이트되었습니다.Visual Composer를 사용하여 요소나 템플릿을 추가할 수 없는 것 같습니다.

누가 도와주시거나 무슨 일이 일어나고 있는지, 어떻게 하면 이 오류를 해결할 수 있는지 알려주세요.

표시되는 오류:

여기에 이미지 설명 입력

여기서 을 보세요.

이 버그를 수정하려면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()
    },

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

또는 wp-content/plugins/syslog_syslog/syslog/dist/syslog.min.syslog'에 있습니다.

이것이 당신에게 효과가 있기를 바랍니다!

나는 아스트라 테마를 사용하고 있다.이 수정은 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

여러분, 건배:)

업데이트 : 이것은 내가 가지고 있던 20개 사이트 중 약 19개 사이트에서 위와 같은 오류를 수정했습니다.1개의 사이트를 제외한 모든 것.

비주얼 컴포저가 나타난 후 이 오류가 발생하였습니다(디자인 요소의 절반이 누락됨).

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

composer-custom-views.js의 552 행을 업데이트하여 이 문제를 해결했습니다.

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

이제 모든 게 잘 풀리네요모든 테마에서 동작하지 않는 경우는, 상기의 코드를 사용해 주세요.그래도 문제가 해결되지 않으면 솔루션을 사용해 보십시오.

누군가가 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 추가 기능을 모두 비활성화했다가 다시 활성화할 때까지 작업이 시작되지 않았습니다.

코드가 html2element 함수에 전달되지 않았지만 그것을 호출하는 함수(렌더)에 존재함을 알게 되었습니다.

다음 코드로 문제가 완전히 해결되었습니다.페이지 로드, 추가, 복제, 삭제 등이 가능합니다.

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;
		},

웃긴 건...비주얼 컴포넌트 버전 번호가 최신 업데이트(4.8.*)를 훨씬 웃돌았습니다.

아무튼...저도 같은 문제가 있었고, 이전 답변으로는 문제가 완전히 해결되지 않았기 때문에 새로운 플러그인 복사본을 구입해 보기로 했습니다.잘 됐어요.

이제 Visual Composer 버전 4.12.1이 WordPress 4.6.1과 오류 없이 작동하는지 확인할 수 있습니다.

또, 다음의 점에 주의해 주세요.

as as as as as as as as as as as as as as as as라는 는 없습니다.backend도 있어요.composer-view.js비주얼 컴포저

PS. 이 GUI 페이지 빌더를 사용하는 것은 ***** 입니다.

Visual Composer의 경우 2016년 12월 최신 픽스입니다.

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.disc(syslog)라는 중요한 사항에 주목해 주십시오.WPordpress 최신 버전과 호환되는 최신 버전의 빠른 수정입니다.

Wordpress와 테마를 적절히 업데이트하여 이 수정이 정상적으로 작동하도록 하십시오.

고맙고 행복한 코딩

이것은 WordPress 버전 4.9.8에서 작동했습니다.

html2element:function (html) {
    var attributes = {}, 
        $template;
    if (_.isString(html)) {
        this.template = _.template(html);
    } else {
        try {
            this.template = _.template(html());                                                                                                                          
        } catch (err) {
            this.template = html;
        }   
    }   
    $template = $(this.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();
},

누구나 구글 검색에서 여기로 올 수 있습니다.html2element 함수 변경 후 다음 오류가 발생할 경우 속성 '속성' 업데이트 렌더: 함수를 아래 코드로 읽습니다.

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;
    },

언급URL : https://stackoverflow.com/questions/36641618/uncaught-typeerror-template-get-is-not-a-function

반응형