Suche senden
Hochladen
Parsing strange v2
•
2 gefällt mir
•
2,201 views
Hal Stern
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 24
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Parsing strange v3
Parsing strange v3
Hal Stern
Parsing strange v4
Parsing strange v4
Hal Stern
Parsing strange v4
Parsing strange v4
Hal Stern
Solr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
03 form-data
03 form-data
snopteck
DSpace 4.2 Transmission: Import/Export
DSpace 4.2 Transmission: Import/Export
DuraSpace
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data Merge
Clay Helberg
Empfohlen
Parsing strange v3
Parsing strange v3
Hal Stern
Parsing strange v4
Parsing strange v4
Hal Stern
Parsing strange v4
Parsing strange v4
Hal Stern
Solr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
03 form-data
03 form-data
snopteck
DSpace 4.2 Transmission: Import/Export
DSpace 4.2 Transmission: Import/Export
DuraSpace
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data Merge
Clay Helberg
Using Apache Solr
Using Apache Solr
pittaya
Solr Recipes Workshop
Solr Recipes Workshop
Erik Hatcher
Apache Solr Workshop
Apache Solr Workshop
Saumitra Srivastav
Dspace configuration on XMLUI DSpace
Dspace configuration on XMLUI DSpace
Bharat Chaudhari
Wizard of ORDS
Wizard of ORDS
Roel Hartman
Apache Solr
Apache Solr
Minh Tran
Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
israelekpo
Solr 6 Feature Preview
Solr 6 Feature Preview
Yonik Seeley
Introduction to Solr
Introduction to Solr
Erik Hatcher
Introduction to Apache Solr.
Introduction to Apache Solr.
ashish0x90
Solr Presentation
Solr Presentation
Gaurav Verma
Parsing strange v1.1
Parsing strange v1.1
Hal Stern
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Carsten Czarski
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
Introduction to Apache Solr
Introduction to Apache Solr
Alexandre Rafalovitch
Lessons from a Dying CMS
Lessons from a Dying CMS
Sandy Smith
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
DEEPAK KHETAWAT
A JCR View of the World - adaptTo() 2012 Berlin
A JCR View of the World - adaptTo() 2012 Berlin
Alexander Klimetschek
Introduction to Apache solr
Introduction to Apache solr
Knoldus Inc.
Intro to Apache Solr for Drupal
Intro to Apache Solr for Drupal
Chris Caple
Faces all
Faces all
Veselina Nikolova
Parsing strange v3
Parsing strange v3
Hal Stern
Weitere ähnliche Inhalte
Was ist angesagt?
Using Apache Solr
Using Apache Solr
pittaya
Solr Recipes Workshop
Solr Recipes Workshop
Erik Hatcher
Apache Solr Workshop
Apache Solr Workshop
Saumitra Srivastav
Dspace configuration on XMLUI DSpace
Dspace configuration on XMLUI DSpace
Bharat Chaudhari
Wizard of ORDS
Wizard of ORDS
Roel Hartman
Apache Solr
Apache Solr
Minh Tran
Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
israelekpo
Solr 6 Feature Preview
Solr 6 Feature Preview
Yonik Seeley
Introduction to Solr
Introduction to Solr
Erik Hatcher
Introduction to Apache Solr.
Introduction to Apache Solr.
ashish0x90
Solr Presentation
Solr Presentation
Gaurav Verma
Parsing strange v1.1
Parsing strange v1.1
Hal Stern
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Carsten Czarski
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
Introduction to Apache Solr
Introduction to Apache Solr
Alexandre Rafalovitch
Lessons from a Dying CMS
Lessons from a Dying CMS
Sandy Smith
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
DEEPAK KHETAWAT
A JCR View of the World - adaptTo() 2012 Berlin
A JCR View of the World - adaptTo() 2012 Berlin
Alexander Klimetschek
Introduction to Apache solr
Introduction to Apache solr
Knoldus Inc.
Intro to Apache Solr for Drupal
Intro to Apache Solr for Drupal
Chris Caple
Was ist angesagt?
(20)
Using Apache Solr
Using Apache Solr
Solr Recipes Workshop
Solr Recipes Workshop
Apache Solr Workshop
Apache Solr Workshop
Dspace configuration on XMLUI DSpace
Dspace configuration on XMLUI DSpace
Wizard of ORDS
Wizard of ORDS
Apache Solr
Apache Solr
Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
Solr 6 Feature Preview
Solr 6 Feature Preview
Introduction to Solr
Introduction to Solr
Introduction to Apache Solr.
Introduction to Apache Solr.
Solr Presentation
Solr Presentation
Parsing strange v1.1
Parsing strange v1.1
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
Introduction to Apache Solr
Introduction to Apache Solr
Lessons from a Dying CMS
Lessons from a Dying CMS
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
A JCR View of the World - adaptTo() 2012 Berlin
A JCR View of the World - adaptTo() 2012 Berlin
Introduction to Apache solr
Introduction to Apache solr
Intro to Apache Solr for Drupal
Intro to Apache Solr for Drupal
Andere mochten auch
Faces all
Faces all
Veselina Nikolova
Parsing strange v3
Parsing strange v3
Hal Stern
Ogra S1 2010 Op Competitiveness Part1
Ogra S1 2010 Op Competitiveness Part1
Veselina Nikolova
11 13
11 13
Donna Roberts
Presentation sofia
Presentation sofia
Veselina Nikolova
Ogra s3-2010 success
Ogra s3-2010 success
Veselina Nikolova
ЕГДБ
ЕГДБ
Veselina Nikolova
Ogra s4-2010 tenders
Ogra s4-2010 tenders
Veselina Nikolova
Shades team in action
Shades team in action
Donna Roberts
Stephen 205 (1)
Stephen 205 (1)
farsiya
Stephen Rathinaraj Corr
Stephen Rathinaraj Corr
farsiya
Entr sme10 the_secret_of_success_-_the_many_faces_of_european_entrepreneurshi...
Entr sme10 the_secret_of_success_-_the_many_faces_of_european_entrepreneurshi...
Veselina Nikolova
Teoria de control presentacion
Teoria de control presentacion
cesar
100512074 analisis-de-respuesta-transitoria-docx
100512074 analisis-de-respuesta-transitoria-docx
cesar
Andere mochten auch
(14)
Faces all
Faces all
Parsing strange v3
Parsing strange v3
Ogra S1 2010 Op Competitiveness Part1
Ogra S1 2010 Op Competitiveness Part1
11 13
11 13
Presentation sofia
Presentation sofia
Ogra s3-2010 success
Ogra s3-2010 success
ЕГДБ
ЕГДБ
Ogra s4-2010 tenders
Ogra s4-2010 tenders
Shades team in action
Shades team in action
Stephen 205 (1)
Stephen 205 (1)
Stephen Rathinaraj Corr
Stephen Rathinaraj Corr
Entr sme10 the_secret_of_success_-_the_many_faces_of_european_entrepreneurshi...
Entr sme10 the_secret_of_success_-_the_many_faces_of_european_entrepreneurshi...
Teoria de control presentacion
Teoria de control presentacion
100512074 analisis-de-respuesta-transitoria-docx
100512074 analisis-de-respuesta-transitoria-docx
Ähnlich wie Parsing strange v2
The WordPress University 2012
The WordPress University 2012
Stephanie Leary
<?php + WordPress
<?php + WordPress
Christopher Reding
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Lucidworks
PHP and MySQL.pptx
PHP and MySQL.pptx
natesanp1234
Modeling Tricks My Relational Database Never Taught Me
Modeling Tricks My Relational Database Never Taught Me
David Boike
Wordpress theme development
Wordpress theme development
Naeem Junejo
Advancing Your Custom Fields - WordCamp 2014
Advancing Your Custom Fields - WordCamp 2014
Carleton Web Services
Best Practices for WordPress
Best Practices for WordPress
Taylor Lovett
Carrington Core (2014)
Carrington Core (2014)
alexkingorg
Customizing the SharePoint 2013 user interface with JavaScript - Chris OBrien
Customizing the SharePoint 2013 user interface with JavaScript - Chris OBrien
Chris O'Brien
Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019
Adam Tomat
What's New in WordPress 3.0 (for developers)
What's New in WordPress 3.0 (for developers)
Stephanie Leary
Launching a WordPress Site 101 (Cincinnati WordPress, August 2015)
Launching a WordPress Site 101 (Cincinnati WordPress, August 2015)
Andrew Duthie
Salesforce Development Best Practices
Salesforce Development Best Practices
Vivek Chawla
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
ajshort
Learning to run
Learning to run
dominion
Web Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
Carol McDonald
Rest
Rest
Carol McDonald
Essentials for the SharePoint Power User - SharePoint Engage Raleigh 2017
Essentials for the SharePoint Power User - SharePoint Engage Raleigh 2017
Drew Madelung
Ähnlich wie Parsing strange v2
(20)
The WordPress University 2012
The WordPress University 2012
<?php + WordPress
<?php + WordPress
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
PHP and MySQL.pptx
PHP and MySQL.pptx
Modeling Tricks My Relational Database Never Taught Me
Modeling Tricks My Relational Database Never Taught Me
Wordpress theme development
Wordpress theme development
Advancing Your Custom Fields - WordCamp 2014
Advancing Your Custom Fields - WordCamp 2014
Best Practices for WordPress
Best Practices for WordPress
Carrington Core (2014)
Carrington Core (2014)
Customizing the SharePoint 2013 user interface with JavaScript - Chris OBrien
Customizing the SharePoint 2013 user interface with JavaScript - Chris OBrien
Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019
What's New in WordPress 3.0 (for developers)
What's New in WordPress 3.0 (for developers)
Launching a WordPress Site 101 (Cincinnati WordPress, August 2015)
Launching a WordPress Site 101 (Cincinnati WordPress, August 2015)
Salesforce Development Best Practices
Salesforce Development Best Practices
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
Learning to run
Learning to run
Web Services PHP Tutorial
Web Services PHP Tutorial
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
Rest
Rest
Essentials for the SharePoint Power User - SharePoint Engage Raleigh 2017
Essentials for the SharePoint Power User - SharePoint Engage Raleigh 2017
Kürzlich hochgeladen
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Juan lago vázquez
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
SynarionITSolutions
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Boston Institute of Analytics
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Roshan Dwivedi
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Principled Technologies
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
MIND CTI
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
The Digital Insurer
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
Kürzlich hochgeladen
(20)
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
Parsing strange v2
1.
Parsing Strange:
URL to SQL to HTML Hal Stern snowmanonfire.com headshot by Richard Stevens http://dieselsweeties.com slideshare.net/freeholdhal © 2010 Hal Stern Some Rights Reserved
2.
Why Do You
Care? • Database performance = user experience • A little database expertise goes a long way • Taxonomies for more than sidebar lists • Custom post types (!!) • WordPress is a powerful CMS > Change default behaviors > Defy the common wisdom > Integrate other content sources/filters © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 2
3.
Flow of Control •
Web server URL manipulation > Real file or permalink URL? • URL to query variables > What to display? Tag? Post? Category? • Query variables to SQL generation > How exactly to get that content? • Template file selection > How will content be displayed? • Content manipulation © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 3
4.
Whose File Is
This? • User URL request passed to web server • Web server checks .htaccess file <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /whereyouputWordPress/ > WP install root RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d > Other .htaccess RewriteRule </IfModule> . /index.php [L] files may interfere • Basic rewriting rules: If file or directory URL doesn’t exist, start WordPress via index.php © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 4
5.
Example Meta Fail:
404 Not Found myblog/ myblog/wp-content (etc) myblog/images • Access broken image URLs for unintended results: no 404 pages! myblog/images/not-a-pic.jpg! • Web server can’t find file, assumes it’s a permalink, hands to WP • WP can’t interpret it, so defaults to home © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 5
6.
What Happens Before
The Loop • Parse URL into a query • Set conditionals & select templates • Execute the query & cache results • Run the Loop: <?php if (have_posts()) : while (have_posts()) : the_post(); //loop content endwhile; endif; ?> © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 6
7.
Examining the Query
String <?php global $wp_query; echo ”SQL for this page "; echo $wp_query->request; echo "<br>"; ?> • SQL passed to MySQL in WP_Query object’s request element • Brute force: edit theme footer.php to see main loop’s query for displayed page © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 7
8.
“Home Page” Query
Deconstruction SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post’ AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private’) ORDER BY wp_posts.post_date DESC LIMIT 0, 10 Get all fields from posts table, but limit number of returned rows Only get posts, and those that are published or private to the user Sort the results by date in descending order Start results starting with record 0 and up to 10 more results © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 8
9.
Query Parsing • parse_request()
method of WP_Query extracts query variables from URL • Execute rewrite rules > Pick off ?p=67 style http GET variables > Match permalink structure > Match keywords like “author” and “tag” > Match custom post type slugs © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 9
10.
Query Variables to
SQL • Query type: post by title, posts by category or tag, posts by date • Variables for the query > Slug values for category/tags > Month/day numbers > Explicit variable values ?p=67 for post_id • post_type variable has been around for a while; CPT fill in new values © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 10
11.
Simple Title Slug
Parsing /2010/premio-sausage SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND YEAR (wp_posts.post_date)='2010' AND wp_posts.post_name = 'premio- sausage' AND wp_posts.post_type = 'post' ORDER BY wp_posts.post_date DESC • Rewrite matches root of permalink, extracts tail of URL as a title slug © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 11
12.
Graphs and JOIN
Operations • WordPress treats tags and categories as “terms”, mapped 1:N to posts • Relational databases aren’t ideal for this > INNER JOIN builds intermediate tables on common key values • Following link in a social graph is equivalent to an INNER JOIN on tables of linked items © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 12
13.
WordPress Taxonomy Tables wp_posts
wp_term_relationships wp_term_taxonomy post_id object_id term_taxonomy_id …. term_taxonomy_id term_id post_date taxonomy … description post_content • Term relationships table maps N:1 terms to each post wp_terms term_id • Term taxonomy maps slugs name 1:N to taxonomies slug • Term table has slugs for URL mapping © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 13
14.
Taxonomy Lookup
/tag/premio SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) INNER JOIN wp_terms ON (wp_term_taxonomy.term_id = wp_terms.term_id) WHERE 1=1 AND wp_term_taxonomy.taxonomy = 'post_tag' AND wp_terms.slug IN ('premio') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 14
15.
More on Canonical
URLs • Canonical URLs improve SEO • WordPress is really good about generating 301 Redirects for non-standard URLs • Example: URL doesn’t appear to match a permalink, WordPress does prediction > Use “LIKE title%” in WHERE clause > Matches “title” as initial substring with % wildcard © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 15
16.
Modifying the Query •
Brute force isn’t necessarily good > Using query_posts() ignores all previous parsing, runs a new SQL query • Filter query_vars > Change default parsing (convert any day to a week’s worth of posts, for example) • Actions parse_query & parse_request > Access WP_Query object before execution > is_xx() conditionals are already set © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 16
17.
SQL Generation Filters •
posts_where > More explicit control over query variable to SQL grammar mapping • posts_join > Add or modify JOINS for other graph like relationships • Many other filters > Change grouping of results > Change ordering of results © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 17
18.
Custom Post Types •
Change SQL WHERE clause on post type > wp_posts.post_type=‘ebay’ • Add new rewrite rules for URL parsing similar to category & tag > Set slug in CPT registration array 'rewrite' => array ("slug" => “ebay”), • Watch out for competing, overwritten or unflushed rewrite entries <?php echo "<pre>”; print_r(get_option('rewrite_rules')); echo "</pre>”; ?> © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 18
19.
Applications • Stylized listings
> Category sorted alphabetically > Use posts as listings of resources (jobs, clients, events) – good CPT application • Custom URL slugs > Add rewrite rules to match slug and set query variables • Joining other social graphs > Suggested/related content © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 19
20.
Template File Selection •
is_x() conditionals set in query parsing • Used to drive template selection > is_tag() looks for tag-slug, tag-id, then tag > Full search hierarchy in Codex • template_redirect action > Called in the template loader > Add actions to override defaults © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 20
21.
HTML Generation • Done
in the_post() method • Raw content retrieved from MySQL > Short codes interpreted > CSS applied • Some caching plugins generate and store HTML, so YMMV © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 21
22.
Why Do You
Care? • User experience improvement > JOINS are expensive > Large table, repetitive SELECTs = slow > Running query once keeps cache warm > Category, permalink, title slug choices matter • More CMS, less “blog” > Alphabetical sort > Adding taxonomy/social graph elements © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 22
23.
Resources • Core files
where SQL stuff happens > query.php > post.php > canonical.php > rewrite.php • Template loader search path > http://codex.wordpress.org/Template_Hierarchy © 2010 Hal Stern Some Rights Reserved WordCamp Boulder 23
24.
Contact Hal Stern freeholdhal@gmail.com @freeholdhal snowmanonfire.com facebook.com/hal.stern slideshare.net/freeholdhal
© 2010 Hal Stern Some Rights Reserved WordCamp Boulder 24
Jetzt herunterladen