O WordPress provê uma classe de funções para manipulação de banco de dados. A classe é chamada wpdb
E é baseada na classe ezSQL escrita e mantida por Justin Vincent.
Os métodos na classe wpdb
não devem ser chamados diretamente. O WordPress provê a variável global $wpdb
, que é uma instância da classe já definida para a comunicação com o banco de dados do WordPress. Utilize sempre a variável global $wpdb
. (Consulte gloabalize $wpdb
antes de utilizar qualquer função customizada.)
O objeto $wpdb
pode ser utilizado para ler os dados de qualquer tabela do bando de dados do WordPress, além das tabelas criadas pelo próprio. Por exemplo para fazer um SELECT em uma tabela personalizada chamada "minha_tabela", você pode fazer o seguinte.
$meusResultados = $wpdb->get_results( "SELECT id, name FROM minha_tabela" );
O objeto $wpdb
pode interagir com inúmeras tabelas, porém com apenas um banco de dados: O banco de dados do WordPress. Se você precisar se conectar a outro banco de dados, você precisará instanciar seu próprio objeto da classe wpdb
com os detalhes de conexão apropriados. Para instalações complexas com vários bancos de dados, considere utilizar hyperdb.
A função query
permite que você execute qualquer consulta SQL no banco de dados do WordPress. É preferível utilizar uma função mais específica (veja abaixo), porém, para consultas SELECT.
<?php $wpdb->query('query'); ?>
A função retorna um integer correspondente ao número de linhas afetadas/selecionadas. Se houver um erro MySQL, a função retornará FALSE
. (Nota: Como tanto 0 quanto FALSE podem ser retornados, tenha a certeza de usar o operador de comparação correto: igualdade ==
vs. identidade ===
).
Nota: Tal como acontece com todas as funções/classes que executam consultas SQL, você deve escapar a entrada (ex., wpdb->escape($dados_inseridor_pelo_usuario)
). Veja a seção entitulada Protegendo consultas contra ataques de SQL Injection abaixo.
Remover a meta 'gargarejo' e seu valor Post 13. (We'll add the 'prepare' method to make sure we're not dealing with an illegal operation or any illegal characters):
$wpdb->query( $wpdb->prepare( " DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s ", 13, 'gargle' ) );
Performed in WordPress by delete_post_meta()
.
Set the parent of Page 15 to Page 7.
$wpdb->query( " UPDATE $wpdb->posts SET post_parent = 7 WHERE ID = 15 AND post_status = 'static' " );