Top Banner
Working with Geolocation in WordPress @brianhogg http://slideshare.net/bhogg
33

Working with Geolocation in Wordpress

Dec 04, 2014

Download

Technology

Brian Hogg

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Working with Geolocation in Wordpress

Working with Geolocation in WordPress

@brianhogg

http://slideshare.net/bhogg

Page 2: Working with Geolocation in Wordpress

Overview

@brianhoggWordCamp Buffalo Sep

2013 2

Why Geolocation

Capturing the Data

Using the Data

Getting Visitor Location

Page 3: Working with Geolocation in Wordpress

About Brian Hogg

@brianhoggWordCamp Buffalo Sep

2013 3

Software Engineering & Management Started and sold DrawBINGO.com Lived in Montréal, England, now Cambridge

(Ontario) PHP/JS since 2003

Page 4: Working with Geolocation in Wordpress

Why Geolocation

@brianhoggWordCamp Buffalo Sep

2013 4

Events blog Recommendations Mapping Store locations … anything with content +

latitude/longitude

Page 5: Working with Geolocation in Wordpress

5@brianhoggWordCamp Buffalo Sep

2013

Page 6: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp Buffalo Sep

2013 6

“Official” Geolocation pluginhttp://wordpress.org/extend/plugins/

geolocation/ WP-Geohttp://wordpress.org/extend/plugins/wp-geo/

(for custom post types) WordPress native apps … other plugins / themes

Inserting a latitude and longitude for posts.

Page 7: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp Buffalo Sep

2013 7

Page 8: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp Buffalo Sep

2013 8

Page 9: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp Buffalo Sep

2013 9

Inserts a latitude and longitude for each post in the post meta data.

http://codex.wordpress.org/Geodata

Page 10: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp Buffalo Sep

2013 10

Import from CSV

Page 11: Working with Geolocation in Wordpress

Capturing the Data

@brianhoggWordCamp 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>

Page 12: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 12

Simple front-end pop-up

Using WP_Query (meta_query)

Hooks to store in separate, indexed table

Custom feeds

Page 13: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 13

Simple front-end pop-up

Page 14: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 14

Database query Get location of user Restrict posts using a “bounding box” Ordering by distance from a lat/lon

Page 15: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 15

Using WP_Query (meta_query)

Page 16: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 16

Bounding box query

Page 17: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 17

Using WP_Query

Page 18: Working with Geolocation in Wordpress

@brianhoggWordCamp Buffalo Sep

2013 18

Page 19: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 19

Using WP_Query

Page 20: Working with Geolocation in Wordpress

@brianhoggWordCamp Buffalo Sep

2013 20

Page 21: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp 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)

Page 22: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp 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

Page 23: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp 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;

Page 24: Working with Geolocation in Wordpress

@brianhoggWordCamp Buffalo Sep

2013 24

Page 25: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 25

Page 26: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 26

posts_clauses filter

Page 27: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 27

Page 28: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 28

Page 29: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 29

Custom feeds

Page templates

Caching?

Page 30: Working with Geolocation in Wordpress

Using the Data

@brianhoggWordCamp Buffalo Sep

2013 30

Create map markers from one or more JSON based feeds

Page 31: Working with Geolocation in Wordpress

Getting Visitor Location

@brianhoggWordCamp Buffalo Sep

2013 31

IP address (approximate)

GPS

Google Maps API

Page 32: Working with Geolocation in Wordpress

Getting Visitor Location

@brianhoggWordCamp 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)

Page 33: Working with Geolocation in Wordpress

@brianhoggWordCamp Buffalo Sep

2013 33

Resources / Contact

[email protected]@brianhogg