43 votes

Uncaught TypeError: $ template.get n'est pas une fonction

J'obtiens cette erreur dans WordPress quand je suis à l'aide d'un plugin appelé WpBakery Visual Compositeur.

Je suis l'aide de la dernière version de WordPress (4.5), à l'aide de la dernière version de Google Chrome et tous les plugins sont à jour. Je ne peux pas semblent être en mesure d'ajouter des éléments ou des modèles à l'aide de Visual Composer.

Quelqu'un peut-il m'aider ou me dire ce qui pourrait se passer et comment je peux corriger cette erreur.

L'erreur que je reçois:

enter image description here

113voto

Ben Points 2265

S'il vous plaît voir ma réponse ici.

J'ai corrigé ce bogue en mettant à jour la fonction html2element sur:

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

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

ou dans wp-content / plugins / js_composer / assets / js / dist / backend.min.js`

J'espère que cela fonctionne pour toi!

25voto

Renegade_Mtl Points 351

@Sorin Haidau

Salut les gars, je suis à l'aide de l'Astra thème. Ce correctif est de 99,9 % de travail. Pour certains tho, cela ne s'arrête que la roue qui tourne, mais une fois le chargement de la page visual compositeur n'est pas.

J'ai fait une légère modification de ce code (c'est affiché partout maintenant)

D'origine Astra thème code ici (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();
    },

Le code qui fonctionne :

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

La principale différence se trouve ici (versus code d'origine)

}); this.$el.attr

Il y a un point-virgule au lieu de l'original par des virgules :) :

}), this.$el.attr

Les acclamations des gens :)

Mise à jour : Ce fixe sur 19 des 20 sites que j'ai eu avec le thème astra avec le même message d'erreur tel que mentionné ci-dessus... tous sauf un site.

J'ai eu cette erreur après le visual composer est finalement apparu (il manque la moitié des éléments de conception)

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

J'ai fixé ce, par la mise à jour de la ligne 552 de la composer-custom-views.js :

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

Et voilà tout fonctionne maintenant. Je suis désolé si cela ne fonctionne pas pour tous les thèmes, essayez d'utiliser le code mentionné par d'autres, ci-dessus. Si cela ne fonctionne pas, essayez mes solutions :)

18voto

Elon Zito Points 41

Quelqu'un a posté sur les forums WordPress cette solution qui a fonctionné pour moi.

Remplacez la fonction html2element dans /wp-content/plugins/js_composer/assets/js/backend/composer-view.js par la suivante.

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

Edit: J'ai dû effectuer ce remplacement une seconde fois dans différentes circonstances, et il n'a pas commencé à fonctionner avant que je ne l'aie désactivé puis réactivé à la fois le plug - in Visual Composer et l'add-on Ultimate Visual Composer.

3voto

Amritosh pandey Points 302

Remarqué que le code n'était pas passé dans la fonction html2element, mais existait dans la fonction qui l'appelait (rendait)

Le code suivant a complètement corrigé mes problèmes, je peux charger la page, ajouter, cloner, supprimer, etc.

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

2voto

Shamppi Points 321

Drôle de chose... mon visual composer le numéro de version a été bien au-dessus de la dernière mise à jour (4.8.*).

De toute façon...j'ai eu ce même problème et ces réponses précédentes n'ont pas complètement résoudre mes problèmes, j'ai donc décidé d'essayer et d'acheter une nouvelle copie du plugin. Il a bien fonctionné.

Je peux maintenant confirmer que le Visual Composer version 4.12.1 fonctionne avec WordPress 4.6.1 sans erreurs.

Aussi à noter:

Il n'y a pas un tel répertoire backendou tel fichier appelé composer-view.js dans la dernière version de Visual Composer.

PS. L'utilisation de ces GUI page constructeurs suce ***.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X