WP Custom Plugin / Theme com atualização automática de tabelas de banco de dados

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,