Plugin throwing TypeError after WordPress 4.5 update Plugin throwing TypeError after WordPress 4.5 update wordpress wordpress

Plugin throwing TypeError after WordPress 4.5 update


I was able to resolve the issue. Turns out I was using an older version of JS composer. Updating to the newest version broke my site so I tracked down the error and updated the html2element function to

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

All is working well for me again! Hope this helps others.


I was still getting this error after trying the patch in Ben's answer: Uncaught TypeError: Cannot read property 'custom' of undefined

So I modified the html2element in composer-view.js as follows:

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


@Ben This works perfect!

Cause: Admin was not loading the correct visual editor for js_composer plugin after updatethis plugins.

=====================================================

Error:

Error: TypeError: $template.get is not a functionSource File: wp-content/plugins/js_composer_salient/assets/js/dist/backend.min.js?ver=4.10Line: 4047

=====================================================

SolutionGoto file /wp-content/plugins/js_composer_salient/assets/js/dist/backend.min.js around line 4045:

======> Replace the code =====================================================

    html2element: function(html) {        var $template, attributes = {};        _.isString(html) ? (this.template = _.template(html), $template = $(this.template(this.model.toJSON(), vc.templateOptions["default"]).trim())) : (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()    },

======> Replace with this code ========================================

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