// AJAX: retorna status de progresso e lista de SKUs add_action('wp_ajax_ipw_admin_progress', function() { $status = get_transient('ipw_import_status') ?: []; $progress = [ 'total' => count($status), 'done' => count(array_filter($status, fn($r) => in_array($r['status'], ['Importado','Atualizado','Erro']))), 'percent' => 0 ]; $progress['percent'] = $progress['total'] ? intval($progress['done'] / max(1,$progress['total']) * 100) : 0; wp_send_json_success([ 'progress' => $progress, 'status' => array_values($status), ]); }); // AJAX: inicia a importação de todos os SKUs add_action('wp_ajax_ipw_admin_importar_tudo', function(){ // Aqui você chama o agendador para importar todos do_action('ipw_agendar_importacao_todos'); wp_send_json_success(); }); // AJAX: limpa logs add_action('wp_ajax_ipw_admin_limpar_logs', function(){ delete_transient('ipw_import_status'); wp_send_json_success(); }); // AJAX: exporta Excel (exemplo, use um gerador real) add_action('wp_ajax_ipw_admin_exportar_excel', function(){ // Montar CSV fake (ajuste para XLSX real se quiser) $status = get_transient('ipw_import_status') ?: []; header("Content-type: text/csv"); header("Content-Disposition: attachment; filename=importacao.csv"); echo "SKU,Nome,Status,Tipo,Ultima Atualizacao\n"; foreach ($status as $row) { echo "{$row['sku']},{$row['nome']},{$row['status']},{$row['tipo']},{$row['atualizacao']}\n"; } exit; }); add_action('wp_ajax_ipw_admin_exportar_pdf', function(){ // Simples (para Excel/PDF real use biblioteca, tipo DomPDF ou FPDF) echo "Gere seu PDF aqui!"; exit; });