WordPress: como criar tabelas na base de dados com um plugin

html5 video
HTML5 Video Play como usar
13 Outubro, 2013
SelectBox dinâmico
15 Outubro, 2013
wordpress criar tabelas bd

O WordPress usa pouco SQL para aceder à base de dados. Em vez disso, fornece uma classe de funções para toda manipulação em banco de dados. A classe é baseada na ezSQL escrita e mantida por Justin Vincent e se chama class WPDB. Esta classe gere todas as tabelas da base de dados e seus conteúdos. É responsável por toda a conexão do WordPress.

É possível obviamente usarmos essa classe para criarmos a nossas próprias tabelas, ou simplesmente retirar ou guardar dados usando SQL. Embora os developers sugerem a utilização dos Custom Post Types e da tabela wp_posts para guardar dados, por vezes é necessário criar uma tabela específica pois a sua estrutura é muito diferente.

A classe está disponível no objeto global $wpdb. Ele pode ser usada para trabalhar com todas tabelas do WordPress, as padrões e as criadas por plugins. Quando for usar dentro de funções lembre-se de usar o global. O objeto acessa quantas tabelas existirem, mas somente um banco de dados, o do WordPress. http://codex.wordpress.org/Function_Reference/wpdb_Class

Ao escrevermos plugins WordPress ocasionalmente precisamos de encontrar uma maneira de criar uma tabela de banco de dados com o seu plugin, para armazenar dados de seus recursos, opções, etc. Esta abordagem pode não ser a melhor, mas ela faz esse trabalho. Tendo em conta que será importante que se mantenha a desinstalação do plugin.

exemplo para criar uma tabela na bd do WordPress

<?php 
// Cria uma tabela que ira guardar os IPs de quem aceder ao site.
// ATENCAO: Este codigo e apenas didatico.
function ip_create_table() {
    // Acede ao objeto global de gestao de bd
    global $wpdb;
    
    // Verifica se a nova tabela existe
    // "prefix" o prefixo escolhido na instalacao do WordPress
    $tablename = $wpdb->prefix . 'hits';
    
    // Se a tabela nao existe sera criada
    if ( $wpdb->get_var( "SHOW TABLES LIKE '$tablename'" ) != $tablename ) {
        
        $sql = "CREATE TABLE `$tablename` (
        `id_` int(10) NOT NULL AUTO_INCREMENT,
        `hit_ip` varchar_(100) NOT NULL,
        `hit_date` datetime_ NOT NULL
        );";
    
        // Ao usar a funcao dbDelta() e necessario carregar este ficheiro
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        
        // Funcao que cria a tabela na bd e executa as otimizacoes necessarias
        dbDelta( $sql );
    
    }

}
add_action( 'init', 'ip_create_table' );
?>

nota: para usar tire o caracter underscore em int_(10), varchar_(100) e datetime_

Espero que este artigo tenha sido útil. 🙂 Abraço…

1 Comentário

  1. Jean diz:

    Valeu, tava procurando isso

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *