Puede ejecutar arbitrary sentencias de SQL con wpdb :: query () , incluidas las declaraciones de definición de datos, por ejemplo,
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Nota: Debido a que $wpdb->query()
puede ejecutar arbitrariamente SQL, si la declaración que le pasa contiene CUALQUIERA información del usuario, debe use wpdb :: prepare () para protegerse contra los ataques de Inyección de SQL.
Pero esto plantea la pregunta: ¿cómo creó las tablas específicas de sus complementos? ¿"Manualmente" o programáticamente? Si fue programático, ¿no usaste $wpdb->query()
? Si lo hizo "manualmente", entonces realmente debería crear las tablas (y sus índices) al activar el complemento.
Vea la excelente respuesta a esta otra pregunta de WPSE sobre cómo conectar la activación del complemento (y / o la desactivación y desinstalación) para hacer cosas como crear tablas privadas.