Volumen 7 · Abril 2025

SDL Query Engine: Guía Práctica

Cómo asignar valores a parámetros como ?estado —desde principiantes hasta expertos

En entornos profesionales de WordPress, surge 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 reporte, formulario o actualización requiere código PHP personalizado, generando 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.

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

Observa esta consulta 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.

¿Por qué esto importa? Porque separa la lógica de la base de datos (responsabilidad del DBA) de la interfaz de usuario (responsabilidad del desarrollador). Un mismo archivo .sdl puede usarse en un shortcode, una API REST o un script de administración —sin cambiar una línea de código.

Cómo asignar valores: tres formas prácticas

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

Si guardas la consulta anterior en /wp-content/uploads/sdl/ordenes-filtradas.sdl, cualquier editor puede usarla en una página o post:

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

El motor SDL toma los atributos estado y minimo, los sanitiza y los inyecta de forma segura en la consulta. Ningún conocimiento de PHP es necesario.

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

Puedes consumir la misma lógica desde una app móvil, un dashboard externo o un script de automatización:

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

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

La API recibe los parámetros, los valida y ejecuta la consulta. Todo pasa por $wpdb->prepare(), eliminando riesgos de inyección.

3. Desde PHP (ideal para desarrolladores senior)

En un plugin personalizado, tema o función de administración:

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

Esto es especialmente útil cuando los valores provienen de formularios, ACF, WooCommerce u otras fuentes. Siempre sanitiza los datos antes de pasarlos, aunque SDL ya incluye capas de seguridad.

¿Qué pasa si no se pasa un parámetro?

Si llamas a la consulta sin proporcionar estado o minimo, el motor no podrá reemplazar ?estado o ?minimo. En la mayoría de las implementaciones, esto generará un error o una consulta inválida.

Buena práctica: define valores por defecto en tu lógica de llamada, o usa validación previa:

// Ejemplo con valor por defecto
$estado = sanitize_text_field($_GET['estado'] ?? 'completed');
$minimo = floatval($_GET['minimo'] ?? 0);

execute_sdl_query('ordenes-filtradas.sdl', compact('estado', 'minimo'));

Seguridad por diseño

SDL Query Engine no confía en la esperanza. Cada capa está blindada:

¿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.