问题描述
当我使用一个名为 WpBakery Visual Composer 的插件时,我在 WordPress 中收到此错误。
我正在使用最新版本的 WordPress(4.5),使用最新的 Google Chrome 版本和所有插件更新。我似乎无法使用 Visual Composer 添加任何元素或模板。
有人可以帮我或告诉我可能发生什么,我可以如何解决这个错误。
我得到的错误:
最佳解决办法
请看我的答案 here.
我通过更新 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 /js_composer /assets /js /dist /backend.min.js
希望这适合你!
次佳解决办法
@苏宁海道
嗨,嗨,我正在使用 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
干杯们:)
更新:这固定了 20 个站点中的大约 19 个与主题 astra 有相同的错误,如上所述… 除了一个站点之外。
视觉作曲家终于出现 (缺少一半的设计元素) 后,我遇到了这个错误
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 论坛这个解决方案为我工作。
用/wp-content/plugins/js_composer/assets/js/backend/composer-view.js
替换 html2element
中的 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()
},
编辑:我不得不在不同的情况下再次进行这种替换,并且在禁用然后重新启用 Visual Composer 插件和 Ultimate Visual Composer add-on 之前,它不会开始工作。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。