Quero mostrar a você nesse post Como consultados dados no BD do WordPress diretamente em tabelas MySQL usando a Classe wpdb.
Essa classe de objetos de dados nativa do WordPress permite executar facilmente várias ações no banco de dados MySQL.
Basicamente quando você chamar a classe wpdb
, você vai fazer uma solicitação do arquivo includes/wp-db.php
.
Portanto, para executar consultas SQL, vamos usar essa classe incrível, primeiro instanciando-a, em seguida usando alguns dos seus muitos métodos.
Você pode ver a lista de métodos aqui.
Na verdade, o que precisamos fazer para usar essa classe é usar a variável global $wpdb
antes de rodar qualquer função da classe.
global $wpdb;
Como executar consultas no Banco de Dados do WordPress?
Depois que chamamos nossa variável global $wpdb
podemos já executar algumas funções – ou métodos – da classe wpdb
.
Um dos mais usados talvez seja o método $wpdb->query
que serve para rodar qualquer comando SQL, mas é muito utilizado para SELECT
e DELETE
.
$wpdb->query : Qualquer consulta MySQL
$wpdb->query($wpdb->prepare ("DELETE FROM $wpdb->tabelaDesejada WHERE ID = 1" ));
Como você pode ver no código acima, usamos tabelaDesejada
para referenciar uma tabela do banco de dados na nossa consulta.
$wpdb->get_var : Retorna uma única variável
$count_posts = $wpdb->get_var( $wpdb->prepare(" SELECT COUNT(*) FROM $wpdb->wp_posts" ));
echo "$count_posts";
Perceba acima que, como estamos fazendo um SELECT apenas para contar o número de registros, podemos usar o método get_var
para esse propósito.
$wpdb->get_row : Retorna uma única linha
Se você quer buscar apenas um registro em uma tabela, basta usar o método get_row()
.
Tem um truquezinho aqui que você pode usar que é passar os parâmetros PRODUCT_ARRAY ou PRODUCT_ARR_ALL no final do método.
Já que o retorno do get_row
é um objeto, você pode usar esses dois parâmetros para retornar um array associativo ou com índice numérico, respectivamente:
$wpdb->get_row( $wpdb->prepare( "SELECT * from $wpdb->posts WHERE ID=1"), PRODUCT_ARRAY );
$wpdb->get_results : Retorna múltiplas linhas
Vimos acima o método para retornar uma única linha, mas aqui está o método para retornar múltiplas linhas:
$wpdb->get_results( $wpdb->get_results( $wpdb->prepare( " SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' "));
É fácil ver que estamos fazendo uma consulta no WordPress para buscar todos os posts publicados – Isso retorna um objeto.
$wpdb->insert : Inserir registro
Para adicionar um registro a uma tabela no WordPress é muito simples com o método insert()
$wpdb->insert($table, $data);
Note que estamos passando uma variável que vai conter o nome da tabela (table
) e uma para passar os dados a serem inseridos ($data
).
$wpdb->update : Atualiza um registro
Para atualizar um registro a uma tabela no WordPress é muito simples com o método update()
$wpdb->update( $table, $data, $where );
$wpdb->num_rows : Retorna o número de linhas
Se você quer saber o número de linhas que uma consulta retornaria, basta usar o método num_rows()
.
$wpdb->insert($table, $data);
$wpdb->print_error : Exibe erros de SQL
Se você deseja debugar seus comandos SQL, pode usar o método print_error()
para mostrar qualquer erro com seu SQL:
$wpdb->show_errors();
//Ex:ID (3000) inexistente:
$wpdb->get_row( $wpdb->prepare(" SELECT * FROM $wpdb->posts WHERE ID = 3000");
$wpdb->print_error();
Você pode usar o método show_errors()
antes de executar a consulta SQL e o print_error()
logo após a execução.
$wpdb->last_query : Imprime a última consulta
Isso pode ser bem útil quando uma determinada consulta não está funcionado da forma esperada:
var_dump( $wpdb->last_query );
Esse foi um guia bem rápido de utilização da classe wpdb
e você pode deixar suas dúvidas nos comentários abaixo.
Vamos utilizar bastante essa classe para vários objetivos nos próximos posts, então, vale a pena você dar uma estudada nela.
Grande abraço,