Вопрос или проблема
Я хочу добавить кнопку в элементор “Добавить новый раздел” на странице редактирования. В корневом файле моего плагина я просто подключил js файл. Я убедился, что js файл загружается правильно, и в консоли я вижу в конце этот console.log(‘Elementor initialized’);. Если кто-то может решить проблему, пожалуйста, помогите мне. Для уточнения, я просто хочу добавить только кнопку.
Смотрите изображение для большей ясности
console.log('custom-button.js загружен');
jQuery(window).on('elementor:init', function() {
console.log('Elementor инициализирован');
elementor.hooks.addAction('editor/init', function() {
console.log('Редактор инициализирован');
const interval = setInterval(() => {
const targetContainers = document.querySelectorAll('.elementor-add-new-section, .e-view');
console.log('Проверка целевых контейнеров:', targetContainers);
if (targetContainers.length > 0) {
targetContainers.forEach((container, index) => {
console.log(`Контейнер ${index} найден`, container);
if (container.classList.contains('e-view')) {
const buttonDiv = document.createElement('div');
buttonDiv.classList.add('elementor-add-section-area-button');
const newButton = document.createElement('button');
newButton.textContent="Добавить новый раздел";
newButton.classList.add('button', 'button-primary');
buttonDiv.appendChild(newButton);
container.appendChild(buttonDiv);
console.log('Кнопка добавлена в редактор');
clearInterval(interval);
}
});
} else {
console.log('Совпадающих целевых контейнеров пока не найдено');
}
}, 500);
});
});
Для добавления пользовательской кнопки в интерфейсе “Добавить новый раздел” Elementor вы можете использовать JavaScript, чтобы подключиться к интерфейсу редактора Elementor. Поскольку вы успешно подключили файл JavaScript и видите журнал консоли, вы можете добавить код для вставки кнопки в раздел.
Вот базовый пример того, как добавить кнопку в редакторе Elementor:
-
JavaScript код (в вашем подключаемом файле):
jQuery(document).ready(function($) { // Ждем полной инициализации Elementor elementor.on('preview:loaded', function() { console.log('Elementor инициализирован'); // Добавить кнопку в панель разделов Elementor const buttonHTML = '<button id="custom-button" style="padding: 5px; margin-left: 10px;">Пользовательская кнопка</button>'; // Найти место, куда вы хотите добавить кнопку // Здесь, например, мы добавляем в панель инструментов раздела $(document).on('DOMNodeInserted', function(e) { if ($(e.target).hasClass('elementor-add-section')) { $(e.target).append(buttonHTML); // Опционально: добавить обработчик событий для кнопки $('#custom-button').on('click', function() { alert('Пользовательская кнопка нажата!'); }); } }); }); });
-
Объяснение:
elementor.on('preview:loaded', function() {...})
: Это гарантирует, что код выполнится только после полной загрузки Elementor.$(document).on('DOMNodeInserted', function(e) {...})
: Мониторит изменения в DOM. Когда пользовательский интерфейс “Добавить раздел” добавляется, мы вставляем пользовательскую кнопку.$('#custom-button').on('click', function() {...})
: Добавляет событие клика для кнопки.
-
CSS стилизация (по желанию):
Если вам нужны особые стили для вашей кнопки, вы можете добавить CSS как встроенно, так и в отдельном файле CSS.
#custom-button { background-color: #28a745; color: white; border: none; padding: 5px 10px; border-radius: 3px; cursor: pointer; }
После реализации этого перезагрузите редактор Elementor, и вы должны увидеть пользовательскую кнопку в области “Добавить раздел”. Дайте знать, если вам нужна дополнительная настройка.
Ответ или решение
Чтобы добавить кнопку в интерфейсе "Добавить новый раздел" в Elementor, необходимо воспользоваться JavaScript, чтобы вписать элемент в пользовательский интерфейс редактора. Прежде всего, вы обеспечили правильную загрузку вашего JavaScript-файла, основываясь на вашем выводе в консоли. Теперь мы можем перейти к реализации самого кода для добавления кнопки.
Шаг 1. Подготовка JavaScript
- Обработка события загрузки Elementor: Ваш код должен ожидать полного завершения инициализации Elementor, прежде чем вносить изменения в интерфейс.
- Интервал проверки DOM: Примените метод
setInterval
, чтобы отслеживать появление нужных контейнеров в DOM.
Вот пример кода, который добавит кнопку в интерфейсе редактора Elementor:
jQuery(window).on('elementor:init', function() {
console.log('Elementor initialized');
elementor.hooks.addAction('editor/init', function() {
console.log('Editor initialized');
const interval = setInterval(() => {
const targetContainers = document.querySelectorAll('.elementor-add-section');
if (targetContainers.length > 0) {
targetContainers.forEach((container) => {
const buttonDiv = document.createElement('div');
buttonDiv.classList.add('elementor-add-section-area-button');
const newButton = document.createElement('button');
newButton.textContent = "Добавить новый раздел";
newButton.classList.add('button', 'button-primary');
buttonDiv.appendChild(newButton);
container.appendChild(buttonDiv);
newButton.addEventListener('click', function() {
alert('Кнопка нажата!');
});
console.log('Кнопка добавлена в редактор');
clearInterval(interval);
});
} else {
console.log('Контейнеры не найдены, повторная проверка...');
}
}, 500);
});
});
Шаг 2. Объяснение кода
elementor.hooks.addAction('editor/init', ...)
: Этот код выполняется после инициализации редактора, что гарантирует, что все элементы пользовательского интерфейса готовы к модификации.setInterval(() => {...}, 500)
: Проверяет наличие контейнеров, куда можно вставить кнопку, каждые 500 миллисекунд.- Создание кнопки: Вы создаете элемент кнопки, задаете ему текст и классы для стилизации и добавляете его в целевой контейнер.
Шаг 3. CSS Стилизация (опционально)
При необходимости вы можете добавить стили для вашей кнопки. Например:
.elementor-add-section-area-button button {
background-color: #28a745; /* Зеленый цвет */
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
margin-left: 10px; /* Отступ слева */
}
Заключение
После внедрения данного кода и стилей, перезагрузите редактор Elementor. Теперь вы должны увидеть свою пользовательскую кнопку в области “Добавить новый раздел”. Если вам нужно более детализированное решение или дополнительные функции, пожалуйста, дайте знать, и я помогу вам с этим.