function awp_enqueue_cuadros_assets() { wp_enqueue_style('awp-cuadros-css', AWP_PLUGIN_URL . 'assets/css/shortcode-cuadros.css', [], '1.0.0'); wp_enqueue_script('awp-cuadros-js', AWP_PLUGIN_URL . 'assets/js/shortcode-cuadros.js', [], '1.0.0', true); wp_localize_script('awp-cuadros-js', 'awpCuadros', [ 'ajaxurl' => admin_url('admin-ajax.php'), 'nonceSumar' => wp_create_nonce('awp_sumar_envio'), 'nonceEnviar' => wp_create_nonce('awp_enviar_mensajes'), ]); } function awp_render_clientes_sumar_shortcode($atts = []) { awp_enqueue_shortcode_assets(); awp_enqueue_cuadros_assets(); global $wpdb; function awp_render_clientes_programados_shortcode($atts = []) { awp_enqueue_shortcode_assets(); awp_enqueue_cuadros_assets(); global $wpdb; // AJAX handlers para programar y enviar mensajes desde los shortcodes add_action('wp_ajax_awp_programar_envio', 'awp_ajax_programar_envio'); add_action('wp_ajax_awp_enviar_mensajes', 'awp_ajax_enviar_mensajes'); function awp_ajax_programar_envio() { if (!current_user_can('manage_options')) { wp_send_json_error(['msg' => 'No autorizado']); } check_ajax_referer('awp_sumar_envio'); $ids = isset($_POST['ids']) && is_array($_POST['ids']) ? array_map('intval', $_POST['ids']) : []; if (empty($ids)) { wp_send_json_error(['msg' => 'No hay clientes seleccionados']); } global $wpdb; $enviosTable = awp_table('envios'); $promocionesTable = awp_table('promociones'); $promo = $wpdb->get_row("SELECT * FROM {$promocionesTable} WHERE activa = 1 AND (fecha_inicio IS NULL OR fecha_inicio <= CURDATE()) AND (fecha_fin IS NULL OR fecha_fin >= CURDATE()) ORDER BY creada DESC LIMIT 1", ARRAY_A); if (!$promo) { wp_send_json_error(['msg' => 'No hay promoción activa']); } $insertados = 0; foreach ($ids as $cid) { $wpdb->insert($enviosTable, [ 'cliente_id' => $cid, 'promocion_id' => $promo['id'], 'estado' => 'pendiente', 'fecha_envio' => current_time('mysql'), ]); $insertados++; } wp_send_json_success(['msg' => "Programados: $insertados clientes."]); } function awp_ajax_enviar_mensajes() { if (!current_user_can('manage_options')) { wp_send_json_error(['msg' => 'No autorizado']); } check_ajax_referer('awp_enviar_mensajes'); $ids = isset($_POST['ids']) && is_array($_POST['ids']) ? array_map('intval', $_POST['ids']) : []; if (empty($ids)) { wp_send_json_error(['msg' => 'No hay clientes seleccionados']); } global $wpdb; $enviosTable = awp_table('envios'); $clientesTable = awp_table('clientes'); $promocionesTable = awp_table('promociones'); $promo = $wpdb->get_row("SELECT * FROM {$promocionesTable} WHERE activa = 1 AND (fecha_inicio IS NULL OR fecha_inicio <= CURDATE()) AND (fecha_fin IS NULL OR fecha_fin >= CURDATE()) ORDER BY creada DESC LIMIT 1", ARRAY_A); if (!$promo) { wp_send_json_error(['msg' => 'No hay promoción activa']); } $enviados = 0; foreach ($ids as $cid) { // Buscar el envío pendiente $envio = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$enviosTable} WHERE cliente_id = %d AND estado = 'pendiente' LIMIT 1", $cid), ARRAY_A); if (!$envio) continue; $cliente = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$clientesTable} WHERE id = %d", $cid), ARRAY_A); if (!$cliente) continue; $mensaje = str_replace( ['{nombre}', '{promocion}', '{fecha}'], [(string)$cliente['nombre'], (string)$promo['titulo'], wp_date('d/m/Y')], (string)awp_get_settings()['plantilla_mensaje'] ); $resultado = awp_send_whatsapp($cliente['telefono'], $mensaje); $wpdb->update($enviosTable, [ 'estado' => $resultado['estado'], 'mensaje' => $mensaje, 'error' => $resultado['error'], 'raw_respuesta' => $resultado['raw'], 'fecha_envio' => current_time('mysql'), ], ['id' => $envio['id']]); if (!empty($resultado['ok'])) { $wpdb->update($clientesTable, ['ultimo_contacto' => current_time('mysql')], ['id' => $cid]); awp_increment_messages_today(); $enviados++; } } wp_send_json_success(['msg' => "Enviados: $enviados mensajes."]); } Acceder < Ahora Wellness — WordPress

Acceder

Funciona con WordPress

Error: las cookies se han bloqueado debido a un resultado inesperado. Para obtener ayuda, por favor, revisa esta documentación o inténtalo en los foros de soporte.

← Ir a Ahora Wellness