По умолчанию в форме добавления закладки можно только выбрать группу из существующих. Если хотите создать новую - придется перейти в личный кабинет на вкладку закладок и там добавить группу.
В этой записи я поделюсь рабочим способом добавить возможность создавать новые группы для закладок прямо в форме добавления закладки, без необходимости переходить в ЛК.
Вот как это выглядит:
Открываем форму добавления закладки и видим в списке выбора групп новый пункт "Добавить новую группу"
Выбираем этот пункт и появится поле для создания группы:
Указываем новое имя и жмем "Добавить группу", в итоге группа будет создана и автоматически добавлена в выпадающее меню и выбрана:
В личном кабинете появится созданная группа:
А теперь код, который надо добавить что бы все это работало:
Вначале вам надо добавить js в ваш файл, например в скрипты темы или куда-то еще:
jQuery(document).on('mouseenter', '.bkm-form #group_id', function(){
if(jQuery(this).find('#add_new_group').length > 0) {
return false;
} else {
jQuery('<option id="add_new_group" value="false">Добавить новую группу</option>').appendTo(jQuery(this));
}
});
jQuery(document).on('change', '.bkm-form #group_id', function(){
if(jQuery(this).val() === 'false') {
jQuery(this).val(0);
if(jQuery('.bkm-form').find('.add-new-group').length == 0) {
jQuery('.bkm-form .submit-box').before('<div class="add-new-group"><input type="text" class="new-group-name" placeholder="Укажите имя группы"> <a href="#" class="recall-button">Добавить группу</a></div>');
}
} else {
if(jQuery('.bkm-form').find('.add-new-group').length > 0) {
jQuery('.bkm-form .add-new-group').remove();
}
}
});
jQuery(document).on('click', '.bkm-form .add-new-group a', function(){
var group_name = jQuery('.bkm-form .add-new-group input').val();
if(group_name.length < 3) {
rcl_notice('Имя группы должно быть не менее 3 символов', 'error', 3000);
return false;
} else {
jQuery.post(Rcl.ajaxurl, { action : 'rcl_add_bkm_group_from_form', group_name : group_name }, function(result){
if(result.content) {
//Добавляем
jQuery('<option value="'+result.group_id+'">'+group_name+'</option>').insertBefore(jQuery('.bkm-form #group_id #add_new_group'));
jQuery('.bkm-form #group_id').val(result.group_id).trigger('change');
} else {
rcl_notice(result.error, 'error', 3000);
}
});
}
return false;
});
Затем надо добавить в functions.php темы функцию для создания группы:
add_action('wp_ajax_rcl_add_bkm_group_from_form', 'rcl_add_bkm_group_from_form');
function rcl_add_bkm_group_from_form() {
global $user_ID;
$group_name = strip_tags(esc_sql($_POST['group_name']));
$group_id = bm_add_group(array(
'user_gr' => $user_ID,
'name_gr' => $group_name,
'status_gr' => 0
));
if(!$group_id) {
wp_send_json(array('error' => 'Ошибка создания группы'));
}
wp_send_json(array('content' => 'Добавлено', 'group_id' => $group_id));
}
Ну и конечно же стили, которые надо добавить, например, в style.css вашей темы
form.bkm-form .add-new-group{
display: flex;
align-items: center;
justify-content: space-between;
}
form.bkm-form .add-new-group a{
margin-left: 10px;
padding: 8px;
}





Работает. Спасибо огромное❗