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

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

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…

3 Comments

  • boa noite vim aqui pedir ajuda referente ao woocommerce estou tentando uma interação com as tabelas via access ja fiz a conexão porem precisava de algumas informações ja que na tabela post ele armazena não so os produtos gostaria de saber onde ele armazena o estoque ou como ele da baixa pois n acho nem a tabela de vendas e nem de entrada e nem o valor dos produtos tb poderia me ajudar.

  • Viva, Marcelo! O que pretende esta guardado nas tabelas que o Woocommerce cria na altura da sua instalação.

    Os produtos estão localizados principalmente em 2 tabelas: “wp_posts table” com um “post_type” como “product” ou “product_variation”. A tabela “wp_postmeta” com o “post_id” correspondente por produto (o ID do produto).

    Tipos de produtos, categorias, subcategorias, tags, atributos e todas as outras taxonomias personalizadas estão localizadas nas seguintes tabelas:

    wp_terms
    wp_termmeta
    wp_term_taxonomy
    wp_term_relationships
    wp_woocommerce_termmeta
    wp_woocommerce_attribute_taxonomies (apenas para atributos do produto).

    Você consegue essa informação na documentação do plugin.

Deixar um comentário

captcha