Consultas diretas ao banco com $wpdb->prepare
Como montar queries SQL seguras evitando SQL Injection ao usar $wpdb.
Causa
Concatenar valores vindos do usuário diretamente em strings SQL permite que entradas maliciosas alterem a query original (SQL Injection).
Como resolver
Sempre use () com placeholders (%s, %d, %f) para interpolar valores dinâmicos, deixando o WordPress responsável por escapar corretamente cada tipo.
PHP
global $wpdb;
$status = 'publish';
$autor = 1;
$resultados = $wpdb->get_results(
$wpdb->prepare(
"SELECT ID, post_title FROM {$wpdb->posts} WHERE post_status = %s AND post_author = %d",
$status,
$autor
)
);