#######B/C google puts rate limiting on the host IP, this solution won't work on shared hosts (probably)
A simple Wordpress plugin for adding geographic data to posts.
####Features
- Adds
location,latitude, andlongitudemeta + metaboxes to any content type. - Provides an easy to use interface for selecting which content types to apply the above meta values. Note: this allows selection of built in types: page and post as well as any registered custom post types.
- Provides
WP_GeoQueryan extendedWP_Queryclass for doing distance based and geo-aware queries. - Has support for
within radiusoption to WP_GeoQuery
#####Coming Soon!
Get Directionslink (utilizing Google Maps)- Custom Markers by post type.
- Shortags for:
- Static Map - show one or more posts on a static map
- Dynamic Map
- Option to show radius as overlay
- Show one or more posts
####Installation
- Upload the entire
wp-geo-postsfolder to the/wp-content/plugins/directory. - Activate the plugin through the
Pluginsmenu in WordPress.
####Setup
- Click the
Settingslink on the plugin management page OR click theWP GeoPostslink from the Settings flyout menu. - Generate a Google Maps API Key and enter it into the provided text input. Note: this is optional and used for Google Maps API calls.
- Select all of the content types that you wish to attach georelated content from the leftmost bank of choices and move them to the rightmost column.
- Submit the Form by clicking
Save Changes.
####Usage
#####Metaboxes
For every post type selected on the plugin settings page. That type's add/edit screens will have an additional metabox automatically added. Metadata that is added to each record:
- Location via
wp_gp_location - Latitude via
wp_gp_latitude - Longitude via
wp_gp_longitude
Latitude and Longitude are readonly attributes of the metabox. Their values are automatically generated on save via a call to Google's geoencoding api.
#####WP_GeoQuery Usage
Make a geo-aware query against the posts table. WP_GeoQuery accepts all arguments that WP_Query takes. latitude and longitude are optional parameters. If passed, distance is calculated and returned with each result. In addition to the regular fields, each result returns latitude, longitude, and location.
<?php
$query = new WP_GeoQuery(array(
'latitude' => '37.5160', // User's Latitude (optional)
'longitude' => '-77.5005', // User's Longitude (optional)
'radius' => 25, // Radius to select for in miles (optional)
'posts_per_page' => 25, // Any regular options available via WP_Query
));
foreach($query->posts as $post)
{
echo " {$post->post_title}<br />\n";
// returned only if latitude and longitude are passed into WP_GeoQuery
echo " {$post->distance}<br />\n";
// Always returned by WP_GeoQuery
echo " {$post->location}<br />\n";
echo " {$post->latitude}<br />\n";
echo " {$post->longitude}<br />\n";
echo "<br />\n";
}
?>