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
Mostrar tudo
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 *