1) O documento discute consultas avançadas no WordPress usando a classe WPDB para acessar e manipular dados no banco de dados.
2) A classe WPDB fornece métodos como get_row, get_col, get_var e get_results para realizar consultas e recuperar dados.
3) Os métodos query, insert, update e prepare permitem executar operações de inserção, atualização e exclusão de dados no banco de dados com segurança.
Como criar um mundo autônomo e conectado - Jomar Silva
Advanced Wordpress Queries Tabelas
1. Advanced Wordpress
Queries
Jean Carlo Nascimento aka SUISSA Nodeware
Líder Técnico http://www.nodeware.com.br
Email: suissa@nodeware.com.br Twitter:@nodeware
Twitter: @osuissa
http://about.me/suissa
2. Sobre o autor
Desenvolvedor Web há 8 anos
Formado pela UTF-PR em SI
Especialista em Desenvolvimento Web
Criador do Sampa.js e FrontinSampa
Evangelista Node.js e NoSQL
nosqlbr.com.br
javascriptbrasil.com
jquerybrasil.org
3. Vantagens
Por exemplo, a API do WordPress facilita a consulta para o
número de comentários por post, mas o que acontece se
você quiser puxar para trás o número de comentários para
cada usuário por mensagem (ou por página) e ordená-los
por data ou pelo número de vezes que eles comentaram?
Obviamente, você precisa escrever uma consulta
avançada.
4.
5.
6. Tabelas
wp_comments: dados dos Comentários
wp_commentmeta: meta data de cada Comentário
wp_links: dados do Links
wp_options: todas as opções de Administration > Settings
wp_posts: dados dos Posts e Páginas
wp_postmeta: meta data de cada Post
wp_terms: dados das Categorias e Tags de Posts e Páginas
wp_term_relationships: dados dos relacionamentos entre Posts, categories,
and tags
wp_term_taxonomy: descrições das Tags, Links e/ou Categorias gravadas em
wp_terms
wp_users: dados dos Usuários
wp_usermeta: meta data de cada usuário
7.
8. Table: wp_commentmeta
Campos Keyname Type Cardinality Field
Field Type Null Key Default Extra PRIMARY PRIMARY 7 link_ID
meta_id bigint(20) unsigned PRI NULL auto_increment link_category INDEX None link_category
comment_id bigint(20) unsigned IND 0 FK->wp_comments.comment_id link_visible INDEX None link_visible
meta_key varchar(255) YES IND NULL Table: wp_options
meta_value longtext YES NULL Field Type Null Key Default Extra
Indexes option_id bigint(20) unsigned PRI Pt1 NULL auto_increment
option_name varchar(64) PRI Pt3 & IND
Keyname Type Cardinality Field option_value longtext
PRIMARY PRIMARY 0 meta_ID autoload varchar(20) yes
comment_id INDEX none comment_id Indexes
meta_key INDEX none meta_key
Table: wp_comments Keyname Type Cardinality Field
Field Type Null Key Default Extra PRIMARY PRIMARY 184 option_id
comment_ID bigint(20) unsigned PRI NULL auto_increment blog_id
comment_post_ID bigint(20) unsigned IND 0 FK->wp_posts.ID option_name
comment_author tinytext option_name UNIQUE 184 option_name
comment_author_email varchar(100) Table: wp_postmeta
comment_author_url varchar(200) Field Type Null Key Default Extra
comment_author_IP varchar(100) meta_id bigint(20) unsigned PRI NULL auto_increment
comment_date datetime 0000-00-00 00:00:00 post_id bigint(20) unsigned IND 0 FK->wp_posts.ID
comment_date_gmt datetime IND & IND Pt2 0000-00-00 00:00:00 meta_key varchar(255) YES IND NULL
comment_content text meta_value longtext YES NULL
comment_karma int(11) 0 Indexes
comment_approved varchar(20) IND & Ind Pt1 1
comment_agent varchar(255) Keyname Type Cardinality Field
comment_type varchar(20) PRIMARY PRIMARY 13 meta_ID
comment_parent bigint(20) unsigned 0 FK->wp_comments.ID post_id INDEX 15 post_id
user_id bigint(20) unsigned 0 FK->wp_users.ID meta_key INDEX 7 meta_key
Indexes Table: wp_posts
Field Type Null Key Default Extra
Keyname Type Cardinality Field ID bigint(20) unsigned PRI & IND Pt4 auto_increment
PRIMARY PRIMARY 1 comment_ID post_author bigint(20) unsigned 0 FK->wp_users.ID
comment_post_ID INDEX None comment_post_ID post_date datetime IND Pt3 0000-00-00 00:00:00
comment_approved_date_gmt INDEX None comment_approved post_date_gmt datetime 0000-00-00 00:00:00
comment_date_gmt post_content longtext
comment_date_gmt INDEX None comment_date_gmt post_title text
comment_parent INDEX None comment_parent post_excerpt text
Table: wp_links post_status varchar(20) IND PT2 publish
Field Type Null Key Default Extra comment_status varchar(20) open
link_id bigint(20) unsigned PRI NULL auto_increment ping_status varchar(20) open
link_url varchar(255) post_password varchar(20)
link_name varchar(255) post_name varchar(200) IND
link_image varchar(255) to_ping text
link_target varchar(25) pinged text
link_description varchar(255) post_modified datetime 0000-00-00 00:00:00
link_visible varchar(20) IND Y post_modified_gmt datetime 0000-00-00 00:00:00
link_owner bigint(20) unsigned 1 post_content_filtered longtext
link_rating int(11) 0 post_parent bigint(20) unsigned 0 FK->wp_posts.ID
link_updated datetime 0000-00-00 00:00:00 guid varchar(255)
link_rel varchar(255) menu_order int(11) 0
link_notes mediumtext post_type varchar(20) IND Pt1 post
link_rss varchar(255) post_mime_type varchar(100)
Indexes comment_count bigint(20) 0
Indexes
9.
10.
11. Classe Wpdb
Prove uma interface de acesso ao banco de dados
vagamente baseado na classe ezSQL.
12.
13. Classe Wpdb - API
get_row query
get_col insert
get_var update
get_results prepare
insert_id
show_errors
14. Classe Wpdb - get_row
<?php
$posts = $wpdb->get_row("SELECT ID, post_title FROM wp_posts WHERE
post_status = 'publish'
AND post_type='post' ORDER BY comment_count DESC LIMIT 0,1")
// Título do post mais comentado
echo $posts->post_title;
?>
15. Classe Wpdb - get_col
<?php
$posts = $wpdb->get_col("SELECT ID FROM wp_posts WHERE post_status
= 'publish'
AND post_type='post' ORDER BY comment_count DESC LIMIT 0,10")
// Quarto comentário mais comentado
echo $posts[3]->ID;
?>
16. Classe Wpdb - get_var
<?php
$email = $wpdb->get_var("SELECT user_email FROM wp_users WHERE
user_login = manolo ")
// email do manolo
echo $email;
?>
17. Classe Wpdb - get_results
<?php
$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts
WHERE post_status = 'future'
AND post_type='post' ORDER BY post_date ASC LIMIT 0,4")
// Título do primeiro post agendado
echo $posts[0]->post_title;
?>
18. Classe Wpdb - query
<?php
$wpdb->query("DELETE FROM wp_usermeta WHERE meta_key =
'first_login' OR meta_key = 'security_key' ");
?>
26. Classe Wpdb - show_errors
$wpdb->show_errors();
$wpdb->query("DELETE FROM wp_posts WHERE post_id = 554 ");
// A mensagem de erro irá dizer-lhe que o campo "post_id" é um campo
// desconhecido nesta tabela (já que o campo correto é ID)