Atualmente estou construindo um projeto pessoal para um diretório de negócios baseado em WordPress, e é necessário criar minha própria tabela para algumas seções do meu site.
Felizmente, o WordPress vem com uma função incrível chamada dbDelta . Esta função é excelente, mas necessita de recursos do servidor.
Uma maneira de usá-lo é executar essa função no page loat, mas isso não é uma boa prática. Para superar esse problema, o desenvolvedor deve usar o controle de versão do banco de dados com alguma variável constante.
O outro jeito é o meu 🙂
function manipulate_database_tables()
{
global $wpdb;
if(!function_exists('dbDelta'))
{
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
}
$def_queries = get_option('my_app_default_queries', array());
$sql_queries = array();
$my_table_query = 'create_table_sql_statement';
$sql_queries[md5($my_table_query)] = $my_table_query;
$my_another_table_query = 'create_table_sql_statement_for_another_table';
$sql_queries[md5($my_another_table_query)] = $my_another_table_query;
foreach($sql_queries as $md5 => $query)
{
if(isset($def_queries[$md5]))
{
continue;
}
dbDelta($query);
}
update_option('my_app_default_queries', $sql_queries);
}
manipulate_database_tables();
Usando o meu caminho, você pode inserir esta função em seu functions.php de seu tema ou em seu arquivo relacionado ao banco de dados de seu plugin, e executá-lo em cada carregamento de página.
Nesse caso, o dbDelta será executado apenas para as Instruções SQL modificadas,