Manual Oficial de SDL Query Engine

Motor declarativo seguro para operaciones SQL en WordPress —desde principiantes hasta expertos
Volumen 7 · Abril 2025 · Artículo técnico

En entornos profesionales de WordPress, los equipos enfrentan un dilema constante: los DBAs diseñan consultas SQL avanzadas, pero los desarrolladores frontend o full-stack no siempre pueden integrarlas de forma segura. Cada nuevo reporte, formulario o actualización de datos requiere código PHP personalizado, lo que genera cuellos de botella, riesgos de seguridad y deuda técnica.

SDL Query Engine resuelve este problema de raíz. No es solo una herramienta para SELECT: es un motor completo de operaciones SQL que soporta SELECT, INSERT, UPDATE y DELETE —todo en un formato declarativo, seguro y reutilizable.

De SQL a SDL: sin cambiar tu flujo de trabajo

Los DBAs pueden seguir escribiendo en SQL estándar:

SQL tradicional
UPDATE wp_users
SET display_name = 'Admin Corporativo'
WHERE user_login = 'admin';

Y SDL Query Engine lo convierte a un formato seguro y parametrizable:

Archivo actualizar-usuario.sdl
update {
  table: {prefix}users
  set: { display_name: "Admin Corporativo" }
  where: eq(user_login, "admin")
}

El corazón de SDL: los parámetros dinámicos

Observa esta consulta más avanzada:

Archivo ordenes-filtradas.sdl
select {
  table: {prefix}wc_orders
  columns: [id, total, status]
  where: and(
    eq(status, ?estado),
    gte(total, ?minimo)
  )
}
Los símbolos ?estado y ?minimo no son valores fijos. Son parámetros dinámicos: marcadores que esperan un valor en el momento de la ejecución. El archivo .sdl define la lógica; el contexto de uso le da los datos.

Cómo asignar valores: tres formas prácticas

1. Desde un shortcode (ideal para editores y principiantes)

Cualquier editor puede usar la consulta en una página o post:

[sdl_query file="ordenes-filtradas.sdl" estado="completed" minimo="100"]

El motor toma los atributos, los sanitiza y los inyecta de forma segura. Ningún conocimiento de PHP es necesario.

2. Desde la REST API (ideal para aplicaciones externas)

Para apps móviles, dashboards o automatizaciones:

POST /wp-json/sdl/v1/query
Content-Type: application/x-www-form-urlencoded

file=ordenes-filtradas.sdl&estado=processing&minimo=50

Todo pasa por $wpdb->prepare(), eliminando riesgos de inyección.

3. Desde PHP (ideal para desarrolladores senior)

En plugins, temas o scripts de administración:

$resultados = execute_sdl_query('ordenes-filtradas.sdl', [
    'estado' => 'completed',
    'minimo' => 150
]);

Buena práctica: define valores por defecto si los parámetros son opcionales:

$estado = sanitize_text_field($_GET['estado'] ?? 'completed');
$minimo = floatval($_GET['minimo'] ?? 0);
execute_sdl_query('ordenes-filtradas.sdl', compact('estado', 'minimo'));

Operaciones completas, sin riesgos

Seguridad por diseño, no por esperanza

Ningún valor se concatena directamente en SQL.
Solo lee archivos de /wp-content/uploads/sdl/.
Todas las operaciones usan $wpdb->prepare().
Parámetros dinámicos sanitizados automáticamente.

¿Para quién es esto?

SDL Query Engine no es solo una capa de abstracción: es un puente entre el mundo de los datos y el mundo del contenido.