// Interceptación fina: Solo bloquea endpoints oficiales de licencias de WPForms y permite MainWP add_filter('pre_http_request', function ($preempt, $args, $url) { if (!is_string($url)) { return $preempt; } // 1. Si la petición viene de o va hacia MainWP, NO la interceptamos if ( (isset($args['headers']['User-Agent']) && strpos($args['headers']['User-Agent'], 'MainWP') !== false) || isset($_POST['mainwp_signature']) || isset($_GET['mainwp_signature']) ) { return $preempt; } // 2. Interceptamos ÚNICAMENTE los endpoints específicos de validación de WPForms $is_wpforms_license_req = ( strpos($url, 'wpforms.com/licenses/') !== false || strpos($url, 'wpformsapi.com/license/') !== false || strpos($url, 'wpforms.com/templates/api/') !== false ); if ($is_wpforms_license_req) { // Validación o verificación de clave if (strpos($url, 'validate') !== false || strpos($url, 'verify') !== false) { return [ 'headers' => ['content-type' => 'application/json'], 'body' => wp_json_encode([ 'success' => true, 'type' => 'elite', 'expires' => 'lifetime', 'sub_status' => 'active', 'message' => 'License activated successfully.', ]), 'response' => ['code' => 200, 'message' => 'OK'], 'cookies' => [], 'filename' => null, ]; } // Peticiones de actualización de plugin if (strpos($url, 'get-plugin-updates') !== false) { return [ 'headers' => ['content-type' => 'application/json'], 'body' => wp_json_encode([]), 'response' => ['code' => 200, 'message' => 'OK'], 'cookies' => [], 'filename' => null, ]; } // Para descarga de plantillas/templates, devolvemos respuesta vacía válida para no colgar el creador return [ 'headers' => ['content-type' => 'application/json'], 'body' => wp_json_encode(['success' => true, 'data' => []]), 'response' => ['code' => 200, 'message' => 'OK'], 'cookies' => [], 'filename' => null, ]; } return $preempt; }, 10, 3);