Em suma, sim a $wpdb
classe. Veja Codex para mais informações.
Sempre que você interagir com uma tabela personalizada (ou qualquer tabela, na verdade), você deve passar por isso $wpdb
- verifique se você está familiarizado com o prepare
método que pode ajudar a escapar de consultas e evitar injeções.
Você já deve estar familiarizado, pois deve usá-lo para criar a tabela. No gancho de instalação, você deve ter algo como:
$charset_collate = '';
if ( ! empty($wpdb->charset) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
$charset_collate .= " COLLATE $wpdb->collate";
//Create custom table
$sql_custom_table ="CREATE TABLE {$wpdb->prefix}my_table (
id bigint(20) unsigned NOT NULL auto_increment,
column_a varchar(255) default NULL,
column_b varchar(255) default NULL,
PRIMARY KEY (id)
) $charset_collate; ";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql_custom_table);
Na verdade, esse código é executado sempre que o plug-in é ativado (ou seja, não apenas instalado). Portanto, ele será executado quando alguém atualizar o plug-in automaticamente . Nota: Se eles atualizarem substituindo o plug-in manualmente - então não será -, será necessário ativar o código acima admin_init
quando seu plug-in for atualizado (armazene o número da versão na tabela de opções, verifique a versão atual) .
Agora você normalmente não deseja que o CREATE TABLE
comando SQL esteja em execução toda vez que você atualizar o plug-in - é aqui que dBDelta()
entra.
Antes de executar o comando acima - ele verifica se a tabela existe. Além disso, ele verifica os tipos de coluna. Portanto, se a tabela não existir, ela será criada, se existir, mas alguns tipos de coluna foram alterados, ela será atualizada e, se uma coluna não existir - ela será adicionada.
Infelizmente - se você remover uma coluna das opções acima, ela não será removida automaticamente. Para remover colunas / tabelas, é necessário especificá- DROP
las (verifique se elas existem antes de você).