(function(wp, $) { if (typeof wp.data === 'undefined') { console.error('Gutenberg API не загружен'); return; } // Функция для логирования на стороне сервера function gsg_client_log(message, level = 'INFO') { console.log(`[${level}] ${message}`); $.ajax({ url: gsg_vars.ajax_url, method: 'POST', data: { action: 'gsg_client_log', message: message, level: level, nonce: gsg_vars.nonce } }); } gsg_client_log('Скрипт gsg-script.js загружен'); // Функция для добавления кнопки в правую боковую панель function addButtonToSidebar() { if ($('#gsg-sidebar-button').length > 0) { return true; // Кнопка уже добавлена } // Пробуем найти область боковой панели var sidebar = $('.interface-complementary-area'); if (!sidebar.length) { sidebar = $('.components-panel'); } if (!sidebar.length) { sidebar = $('.edit-post-sidebar'); } // Ищем область с кнопками NitroPack var nitroPackArea = sidebar.find('.nitropack-cache-controls'); if (!nitroPackArea.length) { // Если область NitroPack не найдена, добавляем в конец боковой панели nitroPackArea = sidebar; } if (nitroPackArea.length) { gsg_client_log('Добавление кнопки в боковую панель с селектором: ' + nitroPackArea.attr('class')); nitroPackArea.append( '' ); $('#gsg-sidebar-button').on('click', function() { gsg_client_log('Нажатие на кнопку "Добавить Schema в Rank Math"'); var content = wp.data.select('core/editor').getEditedPostContent(); $.ajax({ url: gsg_vars.ajax_url, method: 'POST', data: { action: 'gsg_generate_schema', nonce: gsg_vars.nonce, content: content, post_id: gsg_vars.post_id }, success: function(response) { gsg_client_log('AJAX-запрос успешен: ' + JSON.stringify(response)); if (response.success) { var modal = $('

Сгенерированный Schema-код

' + response.data.html + '

' + response.data.message + '

'); $('body').append(modal); gsg_client_log('Модальное окно отображено'); $('.gsg-copy').on('click', function() { navigator.clipboard.writeText(response.data.html).then(function() { gsg_client_log('Код скопирован в буфер обмена'); alert('Код скопирован в буфер обмена!'); }); }); $('.gsg-close').on('click', function() { gsg_client_log('Модальное окно закрыто'); modal.remove(); }); } else { gsg_client_log('Ошибка в ответе AJAX: ' + response.data, 'ERROR'); alert('Ошибка: ' + response.data); } }, error: function(xhr, status, error) { gsg_client_log('Ошибка AJAX-запроса: ' + error, 'ERROR'); alert('Ошибка AJAX-запроса'); } }); }); return true; } else { // Логируем доступные классы для отладки var sidebarArea = $('.interface-complementary-area, .components-panel, .edit-post-sidebar'); if (sidebarArea.length) { gsg_client_log('Найдена возможная боковая панель с классами: ' + sidebarArea.attr('class'), 'DEBUG'); } else { gsg_client_log('Не найдено ни одной боковой панели', 'DEBUG'); } return false; } } // Функция для ожидания загрузки DOM function waitForSidebar(attempts = 10, interval = 1000) { let attempt = 0; let loggedError = false; const intervalId = setInterval(function() { attempt++; if (addButtonToSidebar()) { clearInterval(intervalId); gsg_client_log('Кнопка успешно добавлена в боковую панель после ' + attempt + ' попыток'); } else { if (!loggedError) { gsg_client_log('Боковая панель не найдена (попытка ' + attempt + ')', 'ERROR'); loggedError = true; } if (attempt >= attempts) { clearInterval(intervalId); gsg_client_log('Не удалось найти боковую панель после ' + attempts + ' попыток', 'ERROR'); } } }, interval); } // Запускаем ожидание после полной загрузки DOM $(document).ready(function() { waitForSidebar(); }); })(window.wp, jQuery); jedlo - aliani.sk

Značka: jedlo