В течение последних нескольких лет я занимался разработкой пользовательской темы и различных плагинов, которые добавляют опции в элементы WPBakery Page Builder и создают новые пользовательские элементы и т. Д.
Все отлично работало до Page Builder v5.7. Но затем, когда вышел v6.0.x, внезапно у каждой опции Checkbox, которую я добавил к каждому элементу, будь то пользовательский элемент или один из стандартных элементов Page Builder, возникла проблема: как только я щелкнул элемент в редакторе страниц чтобы открыть его настройки, все флажки сняты и сняты, независимо от их значений по умолчанию или сохраненных значений.
Если я поставлю галочку и сохраню настройки, при просмотре внешнего интерфейса сайта опция действительно сохранена и работает в порядке; но когда я снова открываю окно настроек элемента, все они очищаются.
Я просмотрел весь свой код и сравнил его с кодом другого плагина и всей документацией WPBakery и т. Д., И нигде не вижу проблем. Я подумал, что это может быть ошибка в Page Builder v6.0.x, и я отправил им заявку в службу поддержки, но они не смогли дать мне ответ. Тем не менее, похоже, что плагины других людей работают вместе со всеми собственными встроенными элементами Page Builder, что заставляет меня поверить, что это должно быть как-то связано с моим кодом.
Вот пример:
// After VC Init
add_action( 'vc_after_init', 'gd_after_init_actions' );
// ADD OPTIONS TO VISUAL COMPOSER ELEMENTS //
function gd_after_init_actions() {
// ADD FULL WIDTH CHECKBOX TO SINGLE IMAGE ELEMENTS //
$single_image_attributes = array(
'type' => 'checkbox',
'class' => 'full_width_image',
'param_name' => 'full_width_image',
'value' => array('Force Full Width' => true),
'weight' => 1
);
vc_add_param('vc_single_image', $single_image_attributes);
}
Это добавляет флажок «Принудительная полная ширина» к стандартному элементу Page Builder «Одно изображение». Флажок отображается идеально, и если я его проверяю, сохраняю и затем просматриваю интерфейс сайта, этот флажок действительно работает; значение флажка сохранено и изображение растянуто на полную ширину. Но затем, если я вернусь к бэк-энду и нажму на элемент Single Image, чтобы снова отредактировать его настройки, флажок будет снят, и его сохраненное значение будет потеряно.
Аналогично, с плагинами, в которые я добавляю опции с помощью vc_map (), вот пример:
function vc_before_init_actions(){
// Stop all if VC is not enabled
if ( !defined( 'WPB_VC_VERSION' ) ) {
return;
}
// ELEMENT CLASS //
class vcResponsiveYouTubeVideo extends WPBakeryShortCode {
// ELEMENT INIT //
function __construct() {
add_action( 'init', array( $this, 'vc_youtube_video_mapping' ) );
add_shortcode( 'vc_youtube', array( $this, 'vc_youtube_video_html' ) );
}
// ELEMENT MAPPING //
public function vc_youtube_video_mapping() {
// Map the block with vc_map()
$youtubeIcon = plugins_url('responsive-youtube-icon.png',__FILE__ );
vc_map(
array(
'name' => __('Responsive YouTube Video', 'text-domain'),
'base' => 'vc_youtube',
'category' => __('Custom Elements', 'text-domain'),
'icon' => $youtubeIcon,
'params' => array(
array(
'type' => 'checkbox',
'param_name' => 'lightbox',
'value' => array('Pop up video in lightbox' => true),
'admin_label' => false,
'weight' => 0,
'group' => 'Custom Group'
),
)
)
);
}
[etc...]
}
Это всего лишь фрагмент кода, и в нем есть гораздо больше, но это только часть, относящаяся к одному из вариантов флажка, который есть у меня в этом конкретном плагине. Как и в предыдущем примере, если я проверяю его и сохраняю параметры, он работает, но затем, если я возвращаюсь к настройкам элемента, он очищается.
Четные чекбоксы, которые установлены по умолчанию:
array(
'type' => 'checkbox',
'param_name' => 'branding',
'value' => array('Keep YouTube Branding in Control Bar' => true),
'std' => true,
'admin_label' => false,
'weight' => 0,
'group' => 'Custom Group'
),
Этот флажок по-прежнему снимается, как только я нажимаю, чтобы открыть окно настроек.
Я провел немало испытаний, и, похоже, эта проблема существует (пока) только с флажками. Все остальные входные данные, которые я создал, такие как текстовые поля, палитры цветов, выпадающие списки и т. Д., Сохраняются в порядке и сохраняют свои значения при повторном открытии окна настроек.
У кого-нибудь есть идеи по этому поводу?