jQuery(document).ready(function($) { /** * 初始化字符计数器 */ function initCharCounters() { // 标题计数器 $('#ai_seo_title').on('input', function() { updateCounter(this, '#title-counter', 60); updatePreview(); }).trigger('input'); // 描述计数器 $('#ai_seo_description').on('input', function() { updateCounter(this, '#desc-counter', 160); updatePreview(); }).trigger('input'); // 关键词计数器 $('#ai_seo_keywords').on('input', function() { updateCounter(this, '#keywords-counter', 100); }).trigger('input'); } /** * 更新字符计数器 */ function updateCounter(input, counterSelector, maxLength) { var length = $(input).val().length; var counter = $(counterSelector); var percentage = (length / maxLength) * 100; counter.text(length + '/' + maxLength); // 根据长度设置颜色 counter.removeClass('warning good'); if (percentage > 90) { counter.addClass('warning'); } else if (percentage >= 70) { counter.addClass('good'); } } /** * 更新搜索结果预览 */ function updatePreview() { var title = $('#ai_seo_title').val() || $('#title').val() || '未设置标题'; var description = $('#ai_seo_description').val() || '暂无描述'; $('#preview-title').text(title); $('#preview-description').text(description); } /** * 生成SEO内容 */ $('#generate-seo-btn').on('click', function() { var button = $(this); var postId = $('#post_ID').val(); if (!postId) { alert('请先保存文章草稿后再生成SEO内容'); return; } // 显示加载状态 button.prop('disabled', true); $('#ai-seo-loading').show(); $('.ai-seo-fields').css('opacity', '0.5'); // 发送AJAX请求 $.ajax({ url: aiSeoAjax.ajax_url, type: 'POST', timeout: 120000, // 设置超时时间为120秒(2分钟) data: { action: 'generate_seo_content', post_id: postId, nonce: aiSeoAjax.nonce }, success: function(response) { if (response.success && response.data) { // 填充生成的内容 if (response.data.title) { $('#ai_seo_title').val(response.data.title).trigger('input'); } if (response.data.description) { $('#ai_seo_description').val(response.data.description).trigger('input'); } if (response.data.keywords) { $('#ai_seo_keywords').val(response.data.keywords).trigger('input'); } // 显示成功消息 showNotice('SEO内容生成成功!', 'success'); } else { showNotice('生成失败:' + (response.data || '未知错误'), 'error'); } }, error: function(xhr, status, error) { var errorMessage = '请求失败:'; if (status === 'timeout') { errorMessage = 'AI生成超时,请稍后重试。如果问题持续存在,请联系管理员。'; } else if (status === 'error') { errorMessage = '网络错误,请检查网络连接后重试。'; } else { errorMessage += error; } showNotice(errorMessage, 'error'); }, complete: function() { // 恢复界面状态 button.prop('disabled', false); $('#ai-seo-loading').hide(); $('.ai-seo-fields').css('opacity', '1'); } }); }); /** * 显示通知消息 */ function showNotice(message, type) { var noticeClass = type === 'success' ? 'notice-success' : 'notice-error'; var notice = $('
' + message + '
✅ SEO内容质量良好!
'; } scoreHtml += '