¿Cansado de escribir código PHP repetitivo para cada consulta SQL en WordPress? ¿Preocupado por inyecciones o errores de seguridad?
SDL Query Engine es la solución: un motor declarativo que permite ejecutar operaciones SELECT, INSERT,
UPDATE y DELETE de forma segura, reutilizable y sin tocar el núcleo de tu tema o plugin.
¿Qué es SDL Query Engine?
Es un motor que convierte archivos .sdl (con sintaxis declarativa) en consultas SQL seguras usando $wpdb->prepare().
Los DBAs definen la lógica una vez, y los desarrolladores la reutilizan en shortcodes, APIs o PHP.
UPDATE wp_users SET display_name = 'Admin Corporativo' WHERE user_login = 'admin';
actualizar-usuario.sdlupdate {
table: {prefix}users
set: { display_name: "Admin Corporativo" }
where: eq(user_login, "admin")
}
Paso 1: Instalación
- Instala el plugin SDL Query Engine en WordPress.
- Al activarlo, se crea automáticamente la carpeta:
/wp-content/uploads/sdl/ - ¡Listo! Crea tus primeros archivos
.sdlahí.
Paso 2: Ejemplos Reales
posts-publicados.sdlselect {
table: {prefix}posts
columns: [ID, post_title, post_date]
where: eq(post_status, ?status)
order_by: post_date desc
limit: ?limit
}
Uso en shortcode:
[sdl_query file="posts-publicados.sdl" status="publish" limit="5"]
actualizar-nombre.sdlupdate {
table: {prefix}users
set: { display_name: ?nuevo_nombre }
where: eq(user_login, ?usuario)
}
Uso en PHP:
execute_sdl_query('actualizar-nombre.sdl', [
'nuevo_nombre' => sanitize_text_field($_POST['nombre']),
'usuario' => sanitize_user($_POST['login'])
]);
log-accion.sdlinsert {
table: {prefix}user_actions
values: {
user_id: ?user_id,
action: ?action,
timestamp: ?timestamp
}
}
Uso vía AJAX:
jQuery.post(ajaxurl, {
action: 'sdl_query',
file: 'log-accion.sdl',
user_id: 123,
action: 'descargo_informe',
timestamp: Math.floor(Date.now() / 1000)
});
Paso 3: Funciones de Comparación
SDL soporta expresiones lógicas para construir condiciones complejas:
eq(a, b)→a = bneq(a, b)→a != bgt(a, b)→a > blt(a, b)→a < band(),or()para combinar condiciones
select {
table: {prefix}wc_orders
columns: [id, total, status]
where: and(
eq(status, ?estado),
gte(total, ?minimo)
)
}
Seguridad por Diseño
/wp-content/uploads/sdl/
¿Qué NO puedes hacer?
SDL prioriza seguridad sobre flexibilidad total:
- ❌ No soporta
JOIN, subconsultas o CTEs (WITH) - ❌ No permite funciones SQL como
ROUND()oCOALESCE()
Solución: crea vistas en la base de datos y consulta esas vistas con SDL.
Conclusión
SDL Query Engine transforma WordPress en una plataforma de aplicaciones empresariales seguras. Los DBAs definen la lógica, los desarrolladores la reutilizan, y todos ganan en productividad y seguridad.
Empieza hoy: crea tu primer archivo .sdl y olvídate de la deuda técnica.