Advanced Wordpress           QueriesJean Carlo Nascimento aka SUISSA   NodewareLíder Técnico                      http://w...
Sobre o autorDesenvolvedor Web há 8 anosFormado pela UTF-PR em SIEspecialista em Desenvolvimento WebCriador do Sampa.js e ...
VantagensPor exemplo, a API do WordPress facilita a consulta para onúmero de comentários por post, mas o que acontece sevo...
Tabelaswp_comments: dados dos Comentárioswp_commentmeta: meta data de cada Comentáriowp_links: dados do Linkswp_options: t...
Table: wp_commentmeta                                                                                               Campos...
Classe WpdbProve uma interface de acesso ao banco de dadosvagamente baseado na classe ezSQL.
Classe Wpdb - API   get_row    query    get_col   insert   get_var    updateget_results   prepare              insert_id  ...
Classe Wpdb - get_row<?php $posts = $wpdb->get_row("SELECT ID, post_title FROM wp_posts WHEREpost_status = publish AND pos...
Classe Wpdb - get_col<?php  $posts = $wpdb->get_col("SELECT ID FROM wp_posts WHERE post_status= publish  AND post_type=pos...
Classe Wpdb - get_var<?php  $email = $wpdb->get_var("SELECT user_email FROM wp_users WHEREuser_login = manolo ") // email ...
Classe Wpdb - get_results<?php $posts = $wpdb->get_results("SELECT ID, post_title FROM wp_postsWHERE post_status = future ...
Classe Wpdb - query<?php   $wpdb->query("DELETE FROM wp_usermeta WHERE meta_key =first_login OR meta_key = security_key ")...
Classe Wpdb - insert<?php/*$wpdb->insert( $table, $data, $format);*/   $wpdb->insert($wpdb->usermeta, array("user_id" => 1...
Classe Wpdb - update<?php/*$wpdb->update( $table, $data, $where, $format = null, $where_format = null );*/  $wpdb->update(...
E a segurança disso tudo?
Classe Wpdb - prepare<?php $sql = $wpdb->prepare( "INSERT INTO $wpdb->postmeta (post_id,meta_key, meta_value ) VALUES ( %d...
Classe Wpdb - insert_id<?php $sql = $wpdb->prepare( "INSERT INTO $wpdb->postmeta (post_id,meta_key, meta_value ) VALUES ( ...
Classe Wpdb - show_errors$wpdb->show_errors(); $wpdb->query("DELETE FROM wp_posts WHERE post_id = 554 ");  // A mensagem d...
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Advanced Wordpress Queries
Upcoming SlideShare
Loading in...5
×

Advanced Wordpress Queries

986

Published on

Palestra de Jean Carlos Nascimento "Suissa" apresentada durante o 7Masters - Encontro iMasters de Especialistas em WordPress - setembro/2012.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
986
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Advanced Wordpress Queries

  1. 1. Advanced Wordpress QueriesJean Carlo Nascimento aka SUISSA NodewareLíder Técnico http://www.nodeware.com.brEmail: suissa@nodeware.com.br Twitter:@nodewareTwitter: @osuissahttp://about.me/suissa
  2. 2. Sobre o autorDesenvolvedor Web há 8 anosFormado pela UTF-PR em SIEspecialista em Desenvolvimento WebCriador do Sampa.js e FrontinSampaEvangelista Node.js e NoSQLnosqlbr.com.brjavascriptbrasil.comjquerybrasil.org
  3. 3. VantagensPor exemplo, a API do WordPress facilita a consulta para onúmero de comentários por post, mas o que acontece sevocê quiser puxar para trás o número de comentários paracada usuário por mensagem (ou por página) e ordená-lospor data ou pelo número de vezes que eles comentaram?Obviamente, você precisa escrever uma consultaavançada.
  4. 4. Tabelaswp_comments: dados dos Comentárioswp_commentmeta: meta data de cada Comentáriowp_links: dados do Linkswp_options: todas as opções de Administration > Settingswp_posts: dados dos Posts e Páginaswp_postmeta: meta data de cada Postwp_terms: dados das Categorias e Tags de Posts e Páginaswp_term_relationships: dados dos relacionamentos entre Posts, categories,and tagswp_term_taxonomy: descrições das Tags, Links e/ou Categorias gravadas emwp_termswp_users: dados dos Usuárioswp_usermeta: meta data de cada usuário
  5. 5. Table: wp_commentmeta Campos Keyname Type Cardinality FieldField Type Null Key Default Extra PRIMARY PRIMARY 7 link_IDmeta_id bigint(20) unsigned PRI NULL auto_increment link_category INDEX None link_categorycomment_id bigint(20) unsigned IND 0 FK->wp_comments.comment_id link_visible INDEX None link_visiblemeta_key varchar(255) YES IND NULL Table: wp_optionsmeta_value longtext YES NULL Field Type Null Key Default ExtraIndexes option_id bigint(20) unsigned PRI Pt1 NULL auto_increment option_name varchar(64) PRI Pt3 & INDKeyname Type Cardinality Field option_value longtextPRIMARY PRIMARY 0 meta_ID autoload varchar(20) yescomment_id INDEX none comment_id Indexesmeta_key INDEX none meta_keyTable: wp_comments Keyname Type Cardinality FieldField Type Null Key Default Extra PRIMARY PRIMARY 184 option_idcomment_ID bigint(20) unsigned PRI NULL auto_increment blog_idcomment_post_ID bigint(20) unsigned IND 0 FK->wp_posts.ID option_namecomment_author tinytext option_name UNIQUE 184 option_namecomment_author_email varchar(100) Table: wp_postmetacomment_author_url varchar(200) Field Type Null Key Default Extracomment_author_IP varchar(100) meta_id bigint(20) unsigned PRI NULL auto_incrementcomment_date datetime 0000-00-00 00:00:00 post_id bigint(20) unsigned IND 0 FK->wp_posts.IDcomment_date_gmt datetime IND & IND Pt2 0000-00-00 00:00:00 meta_key varchar(255) YES IND NULLcomment_content text meta_value longtext YES NULLcomment_karma int(11) 0 Indexescomment_approved varchar(20) IND & Ind Pt1 1comment_agent varchar(255) Keyname Type Cardinality Fieldcomment_type varchar(20) PRIMARY PRIMARY 13 meta_IDcomment_parent bigint(20) unsigned 0 FK->wp_comments.ID post_id INDEX 15 post_iduser_id bigint(20) unsigned 0 FK->wp_users.ID meta_key INDEX 7 meta_keyIndexes Table: wp_posts Field Type Null Key Default ExtraKeyname Type Cardinality Field ID bigint(20) unsigned PRI & IND Pt4 auto_incrementPRIMARY PRIMARY 1 comment_ID post_author bigint(20) unsigned 0 FK->wp_users.IDcomment_post_ID INDEX None comment_post_ID post_date datetime IND Pt3 0000-00-00 00:00:00comment_approved_date_gmt INDEX None comment_approved post_date_gmt datetime 0000-00-00 00:00:00comment_date_gmt post_content longtextcomment_date_gmt INDEX None comment_date_gmt post_title textcomment_parent INDEX None comment_parent post_excerpt textTable: wp_links post_status varchar(20) IND PT2 publishField Type Null Key Default Extra comment_status varchar(20) openlink_id bigint(20) unsigned PRI NULL auto_increment ping_status varchar(20) openlink_url varchar(255) post_password varchar(20)link_name varchar(255) post_name varchar(200) INDlink_image varchar(255) to_ping textlink_target varchar(25) pinged textlink_description varchar(255) post_modified datetime 0000-00-00 00:00:00link_visible varchar(20) IND Y post_modified_gmt datetime 0000-00-00 00:00:00link_owner bigint(20) unsigned 1 post_content_filtered longtextlink_rating int(11) 0 post_parent bigint(20) unsigned 0 FK->wp_posts.IDlink_updated datetime 0000-00-00 00:00:00 guid varchar(255)link_rel varchar(255) menu_order int(11) 0link_notes mediumtext post_type varchar(20) IND Pt1 postlink_rss varchar(255) post_mime_type varchar(100)Indexes comment_count bigint(20) 0 Indexes
  6. 6. Classe WpdbProve uma interface de acesso ao banco de dadosvagamente baseado na classe ezSQL.
  7. 7. Classe Wpdb - API get_row query get_col insert get_var updateget_results prepare insert_id show_errors
  8. 8. Classe Wpdb - get_row<?php $posts = $wpdb->get_row("SELECT ID, post_title FROM wp_posts WHEREpost_status = publish AND post_type=post ORDER BY comment_count DESC LIMIT 0,1") // Título do post mais comentado echo $posts->post_title;?>
  9. 9. 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;?>
  10. 10. Classe Wpdb - get_var<?php $email = $wpdb->get_var("SELECT user_email FROM wp_users WHEREuser_login = manolo ") // email do manolo echo $email;?>
  11. 11. Classe Wpdb - get_results<?php $posts = $wpdb->get_results("SELECT ID, post_title FROM wp_postsWHERE 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;?>
  12. 12. Classe Wpdb - query<?php $wpdb->query("DELETE FROM wp_usermeta WHERE meta_key =first_login OR meta_key = security_key ");?>
  13. 13. Classe Wpdb - insert<?php/*$wpdb->insert( $table, $data, $format);*/ $wpdb->insert($wpdb->usermeta, array("user_id" => 1, "meta_key" =>"bazinga", "meta_value" => 10), array("%d", %s", "%d")); // INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES (1,"bazinga", 10);?>
  14. 14. Classe Wpdb - update<?php/*$wpdb->update( $table, $data, $where, $format = null, $where_format = null );*/ $wpdb->update( $wpdb->posts, array("post_title" => "Manhê modifiquei"),array("ID" => 5), array("%s"), array("%d") );?>
  15. 15. E a segurança disso tudo?
  16. 16. Classe Wpdb - prepare<?php $sql = $wpdb->prepare( "INSERT INTO $wpdb->postmeta (post_id,meta_key, meta_value ) VALUES ( %d, %s, %d )", 3342, post_views, 2290 ); $wpdb->query($sql);/*$sql = $wpdb->prepare( query [, value_parameter, value_parameter ... ] );*/?>
  17. 17. Classe Wpdb - insert_id<?php $sql = $wpdb->prepare( "INSERT INTO $wpdb->postmeta (post_id,meta_key, meta_value ) VALUES ( %d, %s, %d )", 3342, post_views, 2290 ); $wpdb->query($sql); $meta_id = $wpdb->insert_id;/*$sql = $wpdb->prepare( query [, value_parameter, value_parameter ... ] );*/?>
  18. 18. 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)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×