Criei algumas tabelas adicionais para um plug-in que estou desenvolvendo e preciso adicionar índices a essas tabelas.
Qual é a maneira do WordPress de fazer isso?
O uso dbDelta()
não parece estar funcionando e não vejo nenhum erro nos logs.
Criei algumas tabelas adicionais para um plug-in que estou desenvolvendo e preciso adicionar índices a essas tabelas.
Qual é a maneira do WordPress de fazer isso?
O uso dbDelta()
não parece estar funcionando e não vejo nenhum erro nos logs.
Você pode executar instruções SQL arbitrárias com wpdb :: query () , incluindo instruções de definição de dados, por exemplo
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Nota: Como $wpdb->query()
pode executar SQL arbitrário , se a instrução que você passar contiver QUALQUER entrada do usuário, use wpdb :: prepare () para se proteger contra ataques de injeção de SQL.
Mas isso levanta a questão: como você criou suas tabelas específicas de plugins? "Manualmente" ou programaticamente? Se programaticamente, você não usou $wpdb->query()
? Se você o fez "manualmente", realmente deve criar as tabelas (e seus índices) após a ativação do plug-in.
Veja a excelente resposta a essa outra pergunta do WPSE sobre como conectar-se à ativação do plug-in (e / ou desativação e desinstalação) para fazer coisas como criar tabelas privadas.
Usando dbDelta, em cima de uma CHAVE PRIMÁRIA, você pode incluir a palavra CHAVE para criar um índice para outras colunas:
Exemplo de schema.php no núcleo:
Fonte: codex - Criando tabelas com plugins
fonte