SlideShare a Scribd company logo
1 of 33
Working with Geolocation in
WordPress
@brianhogg
http://slideshare.net/bhogg
Overview
@brianhogg WordCamp Buffalo Sep 2013 2
 Why Geolocation
 Capturing the Data
 Using the Data
 Getting Visitor Location
About Brian Hogg
@brianhogg WordCamp Buffalo Sep 2013 3
 Software Engineering & Management
 Started and sold DrawBINGO.com
 Lived in Montréal, England, now Cambridge
(Ontario)
 PHP/JS since 2003
Why Geolocation
@brianhogg WordCamp Buffalo Sep 2013 4
 Events blog
 Recommendations
 Mapping
 Store locations
 … anything with content + latitude/longitude
5@brianhogg WordCamp Buffalo Sep 2013
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 6
 “Official” Geolocation plugin
http://wordpress.org/extend/plugins/geolocation/
 WP-Geo
http://wordpress.org/extend/plugins/wp-geo/ (for
custom post types)
 WordPress native apps
 … other plugins / themes
Inserting a latitude and longitude for posts.
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 7
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 8
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 9
Inserts a latitude and longitude for each post in the
post meta data.
http://codex.wordpress.org/Geodata
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 10
 Import from CSV
Capturing the Data
@brianhogg WordCamp Buffalo Sep 2013 11
 Translating address string to lat/lon (geocode)
http://maps.googleapis.com/maps/api/geocode/xml?
address=Hamilton+ON&sensor=false
<geometry>
<location>
<lat>43.2500208</lat>
<lng>-79.8660914</lng>
</location>
<location_type>APPROXIMATE</location_type>
</geometry>
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 12
 Simple front-end pop-up
 Using WP_Query (meta_query)
 Hooks to store in separate, indexed table
 Custom feeds
 …
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 13
 Simple front-end pop-up
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 14
 Database query
 Get location of user
 Restrict posts using a “bounding box”
 Ordering by distance from a lat/lon
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 15
 Using WP_Query (meta_query)
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 16
 Bounding box query
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 17
 Using WP_Query
@brianhogg WordCamp Buffalo Sep 2013 18
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 19
 Using WP_Query
@brianhogg WordCamp Buffalo Sep 2013 20
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 21
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN
wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN
wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) LEFT JOIN
wp_geo geo ON wp_posts.ID = geo.post_id WHERE 1=1 AND
wp_posts.post_type = 'post' AND (wp_posts.post_status =
'publish' OR wp_posts.post_status = 'private') AND
( (wp_postmeta.meta_key = 'geo_latitude' AND
CAST(wp_postmeta.meta_value AS DECIMAL) BETWEEN '42' AND '43')
AND (mt1.meta_key = 'geo_longitude' AND CAST(mt1.meta_value AS
DECIMAL) BETWEEN '-79.9999' AND '-78') ) GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC LIMIT 0, 15
 Sample WP_Query SQL (bounding box)
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 22
 WP_Query method very inefficient especially with
larger amounts of data
 Separate table can be used with an index,
numeric data format
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 23
 Create a new indexed table in the database
 Create a WP hook to store in the new table
CREATE TABLE IF NOT EXISTS `wp_geo` (
`post_id` bigint(20) unsigned NOT NULL,
`lat` float NOT NULL,
`lon` float NOT NULL,
PRIMARY KEY (`post_id`),
KEY `latlon` (`lat`,`lon`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
@brianhogg WordCamp Buffalo Sep 2013 24
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 25
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 26
 posts_clauses filter
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 27
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 28
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 29
 Custom feeds
 Page templates
 Caching?
Using the Data
@brianhogg WordCamp Buffalo Sep 2013 30
 Create map markers from
one or more JSON based
feeds
Getting Visitor Location
@brianhogg WordCamp Buffalo Sep 2013 31
 IP address (approximate)
 GPS
 Google Maps API
Getting Visitor Location
@brianhogg WordCamp Buffalo Sep 2013 32
 IP address (approximate)
 MaxMind – www.maxmind.com
 HostIP - http://www.hostip.info/use.html
 http://ipinfodb.com/ip_location_api.php
 Javascript request (navigator.geolocation)
@brianhogg WordCamp Buffalo Sep 2013 33
Resources / Contact
brian@bhconsulting.ca
@brianhogg

More Related Content

Similar to Working with Geolocation in Wordpress

The vJUG talk about jOOQ: Get Back in Control of Your SQL
The vJUG talk about jOOQ: Get Back in Control of Your SQLThe vJUG talk about jOOQ: Get Back in Control of Your SQL
The vJUG talk about jOOQ: Get Back in Control of Your SQL
Lukas Eder
 
Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013
Sébastien Deleuze
 
WordPress Tips and Tricks (DFW Meetup)
WordPress Tips and Tricks (DFW Meetup)WordPress Tips and Tricks (DFW Meetup)
WordPress Tips and Tricks (DFW Meetup)
Stephanie Leary
 
WebGL Crash Course
WebGL Crash CourseWebGL Crash Course
WebGL Crash Course
Tony Parisi
 
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaroundGet Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
DataGeekery
 

Similar to Working with Geolocation in Wordpress (20)

GeoMesa on Spark SQL: Extracting Location Intelligence from Data
GeoMesa on Spark SQL: Extracting Location Intelligence from DataGeoMesa on Spark SQL: Extracting Location Intelligence from Data
GeoMesa on Spark SQL: Extracting Location Intelligence from Data
 
Groovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: MinneapolisGroovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: Minneapolis
 
The vJUG talk about jOOQ: Get Back in Control of Your SQL
The vJUG talk about jOOQ: Get Back in Control of Your SQLThe vJUG talk about jOOQ: Get Back in Control of Your SQL
The vJUG talk about jOOQ: Get Back in Control of Your SQL
 
Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013
 
Powerful geographic web framework GeoDjango
Powerful geographic web framework GeoDjangoPowerful geographic web framework GeoDjango
Powerful geographic web framework GeoDjango
 
Demystifying The Solid Works Api
Demystifying The Solid Works ApiDemystifying The Solid Works Api
Demystifying The Solid Works Api
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Seti 09
Seti 09Seti 09
Seti 09
 
WordPress Tips and Tricks (DFW Meetup)
WordPress Tips and Tricks (DFW Meetup)WordPress Tips and Tricks (DFW Meetup)
WordPress Tips and Tricks (DFW Meetup)
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
Sqladria 2009 SRC
Sqladria 2009 SRCSqladria 2009 SRC
Sqladria 2009 SRC
 
WebGL Crash Course
WebGL Crash CourseWebGL Crash Course
WebGL Crash Course
 
PPT
PPTPPT
PPT
 
Struts 2 + Spring
Struts 2 + SpringStruts 2 + Spring
Struts 2 + Spring
 
Data Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternData Binding in Action using MVVM pattern
Data Binding in Action using MVVM pattern
 
This upload requires better support for ODP format
This upload requires better support for ODP formatThis upload requires better support for ODP format
This upload requires better support for ODP format
 
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaroundGet Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaround
 
Leaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailLeaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRail
 
Django
DjangoDjango
Django
 
Developing PGTop for Android
Developing PGTop for AndroidDeveloping PGTop for Android
Developing PGTop for Android
 

More from Brian Hogg

Pricing and Marketing for Freelancers - How to?
Pricing and Marketing for Freelancers - How to?Pricing and Marketing for Freelancers - How to?
Pricing and Marketing for Freelancers - How to?
Brian Hogg
 
Introduction to test driven development
Introduction to test driven developmentIntroduction to test driven development
Introduction to test driven development
Brian Hogg
 
Intro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and JavascriptIntro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and Javascript
Brian Hogg
 

More from Brian Hogg (12)

Submitting, maintaining and growing a plugin on wp.org
Submitting, maintaining and growing a plugin on wp.orgSubmitting, maintaining and growing a plugin on wp.org
Submitting, maintaining and growing a plugin on wp.org
 
Preparing a WordPress Plugin for Translation
Preparing a WordPress Plugin for TranslationPreparing a WordPress Plugin for Translation
Preparing a WordPress Plugin for Translation
 
Your WordPress Freelance Business Site
Your WordPress Freelance Business SiteYour WordPress Freelance Business Site
Your WordPress Freelance Business Site
 
Things I've Learned About Creating a Premium Plugin
Things I've Learned About Creating a Premium PluginThings I've Learned About Creating a Premium Plugin
Things I've Learned About Creating a Premium Plugin
 
WordPress 4.4 and Upgrading Your Site (without the tears...)
WordPress 4.4 and Upgrading Your Site (without the tears...)WordPress 4.4 and Upgrading Your Site (without the tears...)
WordPress 4.4 and Upgrading Your Site (without the tears...)
 
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST APIWordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
 
Using Actions and Filters in WordPress to Make a Plugin Your Own
Using Actions and Filters in WordPress to Make a Plugin Your OwnUsing Actions and Filters in WordPress to Make a Plugin Your Own
Using Actions and Filters in WordPress to Make a Plugin Your Own
 
Things I learned about Stress and Imposter Syndrome in Tech
Things I learned about Stress and Imposter Syndrome in TechThings I learned about Stress and Imposter Syndrome in Tech
Things I learned about Stress and Imposter Syndrome in Tech
 
Introduction to backbone presentation
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentation
 
Pricing and Marketing for Freelancers - How to?
Pricing and Marketing for Freelancers - How to?Pricing and Marketing for Freelancers - How to?
Pricing and Marketing for Freelancers - How to?
 
Introduction to test driven development
Introduction to test driven developmentIntroduction to test driven development
Introduction to test driven development
 
Intro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and JavascriptIntro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and Javascript
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+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@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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...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...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Working with Geolocation in Wordpress

  • 1. Working with Geolocation in WordPress @brianhogg http://slideshare.net/bhogg
  • 2. Overview @brianhogg WordCamp Buffalo Sep 2013 2  Why Geolocation  Capturing the Data  Using the Data  Getting Visitor Location
  • 3. About Brian Hogg @brianhogg WordCamp Buffalo Sep 2013 3  Software Engineering & Management  Started and sold DrawBINGO.com  Lived in Montréal, England, now Cambridge (Ontario)  PHP/JS since 2003
  • 4. Why Geolocation @brianhogg WordCamp Buffalo Sep 2013 4  Events blog  Recommendations  Mapping  Store locations  … anything with content + latitude/longitude
  • 6. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 6  “Official” Geolocation plugin http://wordpress.org/extend/plugins/geolocation/  WP-Geo http://wordpress.org/extend/plugins/wp-geo/ (for custom post types)  WordPress native apps  … other plugins / themes Inserting a latitude and longitude for posts.
  • 7. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 7
  • 8. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 8
  • 9. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 9 Inserts a latitude and longitude for each post in the post meta data. http://codex.wordpress.org/Geodata
  • 10. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 10  Import from CSV
  • 11. Capturing the Data @brianhogg WordCamp Buffalo Sep 2013 11  Translating address string to lat/lon (geocode) http://maps.googleapis.com/maps/api/geocode/xml? address=Hamilton+ON&sensor=false <geometry> <location> <lat>43.2500208</lat> <lng>-79.8660914</lng> </location> <location_type>APPROXIMATE</location_type> </geometry>
  • 12. Using the Data @brianhogg WordCamp Buffalo Sep 2013 12  Simple front-end pop-up  Using WP_Query (meta_query)  Hooks to store in separate, indexed table  Custom feeds  …
  • 13. Using the Data @brianhogg WordCamp Buffalo Sep 2013 13  Simple front-end pop-up
  • 14. Using the Data @brianhogg WordCamp Buffalo Sep 2013 14  Database query  Get location of user  Restrict posts using a “bounding box”  Ordering by distance from a lat/lon
  • 15. Using the Data @brianhogg WordCamp Buffalo Sep 2013 15  Using WP_Query (meta_query)
  • 16. Using the Data @brianhogg WordCamp Buffalo Sep 2013 16  Bounding box query
  • 17. Using the Data @brianhogg WordCamp Buffalo Sep 2013 17  Using WP_Query
  • 19. Using the Data @brianhogg WordCamp Buffalo Sep 2013 19  Using WP_Query
  • 21. Using the Data @brianhogg WordCamp Buffalo Sep 2013 21 SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) LEFT JOIN wp_geo geo ON wp_posts.ID = geo.post_id WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( (wp_postmeta.meta_key = 'geo_latitude' AND CAST(wp_postmeta.meta_value AS DECIMAL) BETWEEN '42' AND '43') AND (mt1.meta_key = 'geo_longitude' AND CAST(mt1.meta_value AS DECIMAL) BETWEEN '-79.9999' AND '-78') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 15  Sample WP_Query SQL (bounding box)
  • 22. Using the Data @brianhogg WordCamp Buffalo Sep 2013 22  WP_Query method very inefficient especially with larger amounts of data  Separate table can be used with an index, numeric data format
  • 23. Using the Data @brianhogg WordCamp Buffalo Sep 2013 23  Create a new indexed table in the database  Create a WP hook to store in the new table CREATE TABLE IF NOT EXISTS `wp_geo` ( `post_id` bigint(20) unsigned NOT NULL, `lat` float NOT NULL, `lon` float NOT NULL, PRIMARY KEY (`post_id`), KEY `latlon` (`lat`,`lon`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • 25. Using the Data @brianhogg WordCamp Buffalo Sep 2013 25
  • 26. Using the Data @brianhogg WordCamp Buffalo Sep 2013 26  posts_clauses filter
  • 27. Using the Data @brianhogg WordCamp Buffalo Sep 2013 27
  • 28. Using the Data @brianhogg WordCamp Buffalo Sep 2013 28
  • 29. Using the Data @brianhogg WordCamp Buffalo Sep 2013 29  Custom feeds  Page templates  Caching?
  • 30. Using the Data @brianhogg WordCamp Buffalo Sep 2013 30  Create map markers from one or more JSON based feeds
  • 31. Getting Visitor Location @brianhogg WordCamp Buffalo Sep 2013 31  IP address (approximate)  GPS  Google Maps API
  • 32. Getting Visitor Location @brianhogg WordCamp Buffalo Sep 2013 32  IP address (approximate)  MaxMind – www.maxmind.com  HostIP - http://www.hostip.info/use.html  http://ipinfodb.com/ip_location_api.php  Javascript request (navigator.geolocation)
  • 33. @brianhogg WordCamp Buffalo Sep 2013 33 Resources / Contact brian@bhconsulting.ca @brianhogg

Editor's Notes

  1. Not really the mapping side, but storing and using the data and making it easy for end-user to maintain… can talk after
  2. … but relatively new to Wordpress
  3. There are limits to how many times you can call this per day, API key, etc
  4. pre_get_posts
  5. URL of theory there (Java code example) – “GREAT CIRCLE” approximation/projection -- Any mistakes? Let me know 
  6. Template tag or something.. -- IF ALREADY HAVE POSTS - Problem with sorting on PHP side – 1000’s of records, getting just one page? Have to sort all of them each time --- especially if no distance.
  7. Create a hook on activation of the plugin, and to import existing post meta values… 2) can drop on deactivation, too
  8. Other conditions to save geolocation can add… Assumes post meta data is already saved, works alright if only using the WP UI, otherwise need to use updated_post_meta
  9. Don’t have to add the WHERE necessarily – and COULD just use $wpdb and a custom query depending on where you’ll be using the data
  10. LIMIT and other clauses stay the same, so integrates into existing site / feed
  11. Could do something as simple as an is_admin() check --- return $clauses !!! If this is FALSE (Mo)
  12. CUSTOM FEED “CACHING” – clear your browser! /// Google Maps API, Open Street Map (open source alternative)
  13. Don’t even necessarily need a front-end website – easy way for clients to maintain the geographic data (WP posts)
  14. Geo data store --- one meta key, but gives the idea