Я получаю эту ошибку в WordPress, когда я использую плагин под названием WpBakery Visual Composer.
Я использую последнюю версию WordPress (4.5), используя последнюю версию Google Chrome, и все плагины обновляются. Кажется, я не могу добавить какие-либо элементы или шаблоны с помощью 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()
},
in /wp-content/plugins/js_composer/assets/js/backend/composer-view.js
или в wp-content/plugins/js_composer/assets/js/dist/backend.min.js`
Надеюсь, это сработает для вас!
@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);
И вуаля все теперь работает. Мне жаль, если он не работает для всех тем, попробуйте использовать код, упомянутый выше. Если это не сработает, попробуйте мои решения:)
Кто-то опубликовал на форуме 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.8. *).
В любом случае... У меня была такая же проблема, и в предыдущих ответах не было полностью решить мои проблемы, поэтому я решил попробовать и купить новую копию плагина. Это получилось хорошо.
Теперь я могу подтвердить, что версия 4.12.1 Visual Composer работает с WordPress 4.6.1 без ошибок.
Также обратите внимание на это:
В последней версии Visual Composer нет такой директории, как backend
или такой файл с именем composer-view.js
.
PS. Использование этих графических дизайнеров страниц всасывает ***.
Заметил, что код не передавался в функцию 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;
},
последнее исправление в декабре 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 и тему соответственно, так что это исправление должно работать нормально.
спасибо и счастливое кодирование
для всех, кто приходит сюда из поиска 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;
},