Hacer seguras las consultas con cláusulas «IN» con $wpdb en WordPress

Interesante artículo de Felipe en Yukei con uno de los métodos que puedes utilizar a través de la clase $wpdb, que te permite construir una consulta a la base de datos para asegurar que se ejecute de forma segura.

Utilizarlo es realmente sencillo y puedes consultar la documentación oficial en el codex de wordpress. Si hasta ahora no lo has utilizado es importante que os pongáis manos a la obra para proteger tus consultas ante ataques de inyección SQL. Aquí tenéis un ejemplo de código de como aplicarlo.

// obtener un listado de IDs de entradas "especiales"
// $special_entries = array(1, 3, 5, 8, 13, [...]);
$special_entries = get_option('my_special_entries');

// ¿cuántas condiciones se van a seleccionar?
$how_many = count($special_entries);

// prepara la cantidad adecuada de reemplazos
// si se buscarán strings, el último parámetro sería '%s'
$placeholders = array_fill(0, $how_many, '%d');

// unir los reemplazos con comas
// $format = '%d, %d, %d, %d, %d, [...]'
$format = implode(', ', $placeholders);

// la consulta
$query = "SELECT ID, post_title, post_name, post_parent FROM $wpdb->posts WHERE post_parent IN($format)";

// obtener los resultados de forma segura
$results = $wpdb->get_results( $wpdb->prepare($query, $special_entries) );
Scroll al inicio