WP Quadratum – Display Your Last Foursquare Checkin On WordPress

What Is WP Quadratum?

WP Quadratum is a WordPress plugin to display your last Foursquare checkin as a map widget in the sidebar or embedded in a post or page, fully authenticated via OAuth 2.0.

What Does It Do?

This plugin allows you to display your last Foursquare checkin as a map widget on the sidebar or embedded via a shortcode in a post or page of your WordPress powered site.

You can configure WP Quadratum to …

  1. Associate your WordPress powered site with your Foursquare account using OAuth 2.0, which keeps your personal information safe and secure.
  2. Choose which map provider you want your checkin shown on; you can choose from:
    1. HERE Maps
    2. Google Maps v3
    3. Bing Maps v7
    4. OpenStreetMap from Leaflet
    5. OpenStreetMap from OpenLayers
    6. OpenStreetMap from MapQuest
  3. Add your maps API key(s) for your chosen map provider; HERE, Google, Bing and MapQuest maps all require API keys.
  4. Choose the width and height of the widget and map on the sidebar. The width and height can be specified either as pixels (px) or as a percentage.
  5. Choose the zoom level of the map display.

The strapline text containing the venue name, venue URL and timestamp of your last Foursquare checkin can be customised via the plugin’s filters. See the Filter Support And Usage section for more information.

The current version of this plugin allows you to associate a single Foursquare account with your WordPress site; associating multiple Foursquare accounts, one per user account is not currently supported.

How Do I Download WP Quadratum?

To download or install WP Quadratum on your WordPress powered site, either search for WP Quadratum from the WordPress Dashboard or go to plugin’s page on the official WordPress plugin repository.

If you want to fork the source code of the plugin, you can find it on the plugin’s GitHub page at https://github.com/vicchi/wp-quadratum.

What’s New?

WP Quadratum v1.3.1 was released 09/22/13.

Full Documentation

Installation

  1. You can install WP Quadratum automatically from the WordPress admin panel. From the Dashboard, navigate to the Plugins / Add New page and search for “WP Quadratum” and click on the “Install Now” link.
  2. Or you can install WP Quadratum manually. Download the plugin Zip archive and uncompress it. Copy or upload the wp-quadratum folder to the wp-content/plugins folder on your web server.
  3. Activate the plugin. From the Dashboard, navigate to Plugins and click on the “Activate” link under the entry for WP Quadratum.
  4. Configure your Foursquare credentials; from the Dashboard, navigate to the Settings / WP Quadratum page or click on the “Settings” link from the Plugins page on the Dashboard.
  5. To display your Foursquare checkins, WP Quadratum needs to be authorised to access your Foursquare account information; this is a simple, safe and secure 3 step process. WP Quadratum never sees your account login information and cannot store any personally identifiable information.
    1. Register your WordPress site as a Foursquare application on the Foursquare App Registration page. If you’re not currently logged into your Foursquare account, you’ll need to login with the Foursquare account whose checkins you want WP Quadratum to display. The Your app name field is a label you want to use to identify this connection to your Foursquare account. The Download / welcome page url is the URL of your WordPress site. The Redirect URI will be provided for you and will be along the lines of http://www.yoursite.com/wp-content/plugins/wp-quadratum/includes/wp-quadratum-callback.php (this is just an example, don’t use this URL). Push API Notifications should be set to Disable pushes to this app. All other fields can be left at their default values. Once you have successfully registered your site, you’ll be provided with two keys, the Client ID and the Client Secret.
    2. Copy and paste the supplied Client ID and Client Secret into the respective WP Quadratum setting fields. Click on the “Save Changes” button to preserve them.
    3. You should now be authorised and ready to go; click on the Connect to Foursquare button.
  6. Choose your mapping provider. From the Maps tab, select the map provider from the Maps Provider drop down.
  7. If your chosen mapping provider requires an API key or keys, enter them as requested. If you don’t have an API key, each maps provider tab has a link to the provider’s site where you can sign up and obtain your API key. Click on the Save Changes button to save your credentials.
  8. Add and configure a WP Quadratum Widget. From the Dashboard, navigate to Appearance / Widgets and drag the WP Quadratum Widget to your desired widget area.
  9. You can configure the widget’s title, with widget’s width and map height in px or as a percentage and the map zoom level. Click on the Save button to preserve your changes.

Screenshots

  1. Installed Plugins: Authentication prompt shown after activating plugin for the first time
  2. Settings and Options: Foursquare Tab; No Client ID or Client Secret entered or saved
  3. Settings and Options: Foursquare Tab; Client ID and Client Secret saved
  4. Foursquare Authentication: Allow or deny plugin access to your Foursquare account
  5. Settings and Options: Foursquare Tab; Successfully authenticated with Foursquare
  6. Settings and Options: Maps Tab; HERE Maps configuration
  7. Settings and Options: Maps Tab; Google Maps v3 configuration
  8. Settings and Options: Maps Tab; Leaflet Maps configuration
  9. Settings and Options: Maps Tab; Bing Maps v7 configuration
  10. Settings and Options: Maps Tab; OpenLayers Maps configuration
  11. Settings and Options: Maps Tab; MapQuest Open Maps configuration
  12. Settings and Options: Shortcode Tab; [wp_quadratum] shortcode enabled
  13. Settings and Options: Shortcode Tab; [wp_quadratum_locality] shortcode enabled, no Factual OAuth Key or Secret entered or saved
  14. Settings and Options: Shortcode Tab; [wp_quadratum_locality] shortcode enabled, Factual OAuth Key and Secret saved
  15. Settings and Options: Defaults Tab
  16. Settings and Options: Colophon Tab
  17. Appearance: Widgets; Sample widget settings
  18. Sample Widget: Google v3, HERE and Leaflet maps
  19. Sample Widget: Bing v7, OpenLayers and MapQuest Open maps

Installed Plugins: Authentication prompt shown after activating plugin for the first time

v1.3.1-screenshot-1

Settings and Options: Foursquare Tab; No Client ID or Client Secret entered or saved

v1.3.1-screenshot-2

Settings and Options: Foursquare Tab; Client ID and Client Secret saved

v1.3.1-screenshot-3

Foursquare Authentication: Allow or deny plugin access to your Foursquare account

v1.3.1-screenshot-4

Settings and Options: Foursquare Tab; Successfully authenticated with Foursquare

v1.3.1-screenshot-5

Settings and Options: Maps Tab; HERE Maps configuration

v1.3.1-screenshot-6

Settings and Options: Maps Tab; Google Maps v3 configuration

v1.3.1-screenshot-7

Settings and Options: Maps Tab; Leaflet Maps configuration

v1.3.1-screenshot-8

Settings and Options: Maps Tab; Bing Maps v7 configuration

v1.3.1-screenshot-9

Settings and Options: Maps Tab; OpenLayers Maps configuration

v1.3.1-screenshot-10

Settings and Options: Maps Tab; MapQuest Open Maps configuration

v1.3.1-screenshot-11

Settings and Options: Shortcode Tab; [wp_quadratum] shortcode enabled

v1.3.1-screenshot-12

Settings and Options: Shortcode Tab; [wp_quadratum_locality] shortcode enabled, no Factual OAuth Key or Secret entered or saved

v1.3.1-screenshot-13

Settings and Options: Shortcode Tab; [wp_quadratum_locality] shortcode enabled, no Factual OAuth Key or Secret saved

v1.3.1-screenshot-14

Settings and Options: Defaults Tab

v1.3.1-screenshot-15

Settings and Options: Colophon Tab

v1.3.1-screenshot-16

Appearance: Widgets; Sample widget settings

v1.3.1-screenshot-17

Sample Widget: Google v3, HERE and Leaflet maps

v1.3.1-screenshot-18

Sample Widget: Bing v7, OpenLayers and MapQuest Open maps

v1.3.1-screenshot-19

Frequently Asked Questions

How do I get help or support for this plugin?

In short, very easily. But before you read any further, take a look at Asking For WordPress Plugin Help And Support Without Tears before firing off a question. In order of preference, you can ask a question on the WordPress support forum; this is by far the best way so that other users can follow the conversation. You can ask me a question on Twitter; I’m @vicchi. Or you can drop me an email instead. I can’t promise to answer your question but I do promise to answer and do my best to help.

Is there a web site for this plugin?

Absolutely, it’s the page you’re reading,  the WP Quadratum home page which always contains the latest information. There’s also the official WordPress plugin repository page and the source for the plugin is on GitHub as well.

I have multiple authors on my site; can I have a widget for each author’s Foursquare account?

In the current version, no. In the current version, you can link a single Foursquare account with your WordPress site (multi-site or network sites may work, assuming each site is for a single user but I haven’t tested this). The plugin is currently designed to support a WordPress site which is used for a personal blog (in other words, exactly the way my site is set up). Future versions of the plugin may support this if people ask for this feature (assuming anyone apart from myself actually uses it!).

Can I change the format of the strapline that appears under the checkin map?

Yes. The wp_quadratum_strapline filter is for just this purpose. The filter is passed the default strapline as well as the URL to the Foursquare venue checked in at, the name of the venue and the date and time of the checkin as a UNIX timestamp. See the Filter Support And Usage section for more information.

I want to amend/hack/augment this plugin; can I do the same?

Totally; this plugin is licensed under the GNU General Public License v2 (GPLV2). See http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt for the full license terms.

Where does the name WP Quadratum come from?

WP Quadratum is named after both the Latin words quattor, meaning four and quadratum, meaning square.

Shortcode Support And Usage

WP Quadratum supports two shortcodes and three shortcode aliases; [wp_quadratum_map] to expand the shortcode in a post or page and replace it with the checkin map and [wp_quadratum_locality] to allow you to embed aspects of your last checkin in a post or page.

[wp_quadratum_map]

Adding this shortcode to the content of a post or page as content, expands the shortcode and replaces it with a checkin map.

The shortcode also supports multiple attributes which allow you to customise the way in which the shortcode is expanded into the checkin map:

  • the width attribute
  • the width_units attribute
  • the height attribute
  • the height_units attribute
  • the zoom attribute

The “width” Attribute

The width attribute, in conjunction with the height attribute specifies the width of the map to be inserted into a post or page. If omitted, the map width defaults to a value of 300.

The “width_units” Attribute

The width_units attribute, specifies how the value specified in the width attribute should be interpreted. Valid values for this attribute as px and %, denoting that the width attribute should be interpreted in pixels or as a percentage respectively. If omitted, this attribute defaults to a value of px.

The “height” Attribute

The height attribute, in conjunction with the width attribute specifies the height of the map to be inserted into a post or page. If omitted, the map height defaults to a value of 300.

The “height_units” Attribute

The height_units attribute, specifies how the value specified in the height attribute should be interpreted. Valid values for this attribute as px and %, denoting that the height attribute should be interpreted in pixels or as a percentage respectively. If omitted, this attribute defaults to a value of px.

The “zoom” Attribute

The zoom attribute specifies the zoom level to be used when displaying the checkin map. If omitted, the zoom level defaults to a value of 16 which is roughly analogous to a neighbourhood zoom.

[wp_quadratum]

The [wp_quadratum] shortcode is an alias for the [wp_quadratum_map] shortcode and has the same functionality.

[wpq_map]

The [wpq_map] shortcode is an alias for the [wp_quadratum_map] shortcode and has the same functionality.

[wp_quadratum_locality]

Adding this shortcode to the content of a post or page, expands the shortcode and replaces it with information about your last Foursquare checkin. The information to be displayed is selected by the shortcode’s type attribute, which allows you to select the venue name, address, region, postal code, coordinates, timezone or timezone offset.

By default, the [wp_quadratum_locality] shortcode and the [wpq_locality] alias are disabled. This is because not all Foursquare venues contain the full scope of locality elements that the shortcode supports (the minimum requirements for a Foursquare venue are name, category and coordinates). To backfill any missing venue elements, WP Quadratum uses a reverse geocoding service from Factual to supply the missing information.

To enable the [wp_quadratum_locality] shortcode, from the Dashboard navigate to Settings / WP Quadratum and click on the Shortcodes tab. Select the Enable Locality Shortcode Usage checkbox and the Factual OAuth Settings meta-box will appear. You’ll then need to sign up for a Factual API key after which you’ll be given an OAuth Key and OAuth Secret. Copy and paste these into the Factual OAuth text fields and click on Save Shortcode Settings. You’ll now be able to use the [wp_quadratum_locality] shortcode or its alias.

The “type” Attribute

The type attribute specifies the element of your last Foursquare checkin that is to be displayed in a post or page and can take one of the following values:

  • venue – the name of the last Foursquare venue you checked into.
  • address – the street address of the venue; not including the region, locality or postal code.
  • region – the region of the venue; the geographic context of the region will vary from country to country but is roughly analogous to the venue’s city.
  • postcode – the postal code of the venue, if the country or region supports postal codes.
  • coordinates – the geographic coordinates of the venue, in the form latitude,longitude.
  • timezone – the timezone name of the time of the checkin, such as Europe/London.
  • tzoffset – the offset from GMT of the time of the checkin, in the form GMT[-+]hours, such as GMT-1 or GMT+2.
  • locality – the locality of the venue; the geographic context of the locality will vary according to country, but is roughly analogous to the town or neighbourhood.

If the type attribute is not supplied, or if the value of this attribute is not one of the above values, type="locality" will be assumed. The shortcode’s replacement value can be modified via the plugin’s wp_quadratum_locality filter; see the Filter Support and Usagesection for more information.

[wpq_locality]

The [wpq_locality] shortcode is an alias for the [wp_quadratum_locality] shortcode and has the same functionality.

Filter Support And Usage

WP Quadratum supports three filters, which are described in more detail below. The plugin’s filters allow you to:

  • change the descriptive text that appears immediately below the map when displayed via the plugin’s widget or shortcode.
  • gain access to the checkin metadata that is returned from the Foursquare API
  • change the output of the [wp_quadratum_locality]` shortcode

wp_quadratum_checkin

Allow a filter hook function to gain access to the checkin metadata that is returned from the Foursquare API and which is used to build the checkin map and strapline. It’s important to note that the implementation of this filter isn’t strictly a WordPress filter per se. The user defined hook function is passed only the checkin metadata. Any changes made to the metadata will not be reflected in the output of the plugin’s or shortcode’s map, nor will any return value from the hook function be honoured by the plugin. The filter will be called before the wp_quadratum_strapline filter, if used, allowing you to store the checkin contents and use them within the wp_quadratum_strapline filter hook.

The contents of the checkin data this filter can access are a Checkin Response object, which is documented on the Foursquare Developer Site.

Example: Store the contents of the Foursquare checkin that the plugin will be to display the checkin map

$last_checkin = null;
add_filter('wp_quadratum_checkin', store_last_checkin, 10, 1);
function store_last_checkin($checkin) {
    $last_checkin = $checkin;
}

wp_quadratum_strapline

Applied to the strapline that is displayed via the plugin’s widget or shortcode. The strapline is the text that appears immediately below the checkin map.

Example: Change the date and time formatting in the strapline

add_filter('wp_quadratum_strapline', 'format_strapline', 10, 2);
function format_strapline($content, $params) {
    // $params = array (
    //      'venue-url' => '4Sq venue url for checkin',
    //      'venue-name' => 'checkin venue name',
    //      'checked-in-at' => 'timestamp of checkin'
    //  );

	$strapline = '<h5>Last seen at <a href="' . $params['venue-url'] . '" target="_blank">' . $params['venue-name'] . '</a> on ' . date('l jS of F Y h:i:s A', $params['checked-in-at']) . '</h5>';
	return $strapline;
}

wp_quadratum_locality

Applied to the replacement content of the [wp_quadratum_locality] shortcode immediately before the shortcode is replaced. The filter’s hook function is passed two arguments; the shortcode’s value and corresponding type attribute.

Example: Wrap each invocation of the [wp_quadratum_locality] shortcode in a div whose class includes the attribute type

add_filter('wp_quadratum_locality', 'format_locality', 10, 2);
function format_locality($value, $type) {
    $class = 'wp-quadratum-locality-' . $type;
    return '<div class="' . $class . '>' . $value . '</div>';
}

What’s Changed?

The current version is 1.3.1 (2013.11.22)

v1.3.1

  • Released: 2013.11.22
  • Added: Caching of last good response from the Foursquare API, allowing the plugin to operate if the API is temporarily down.
  • Added: New locality shortcodes, [wp_quadratum_locality] (and [wpq_locality] as an alias) to allow the last checkin’s venue name, address, region, postal code, coordinates, timezone and/or timezone offset to be embedded in posts or pages.
  • Added: New checkin map shortcodes, [wp_quadratum_map] and [wpq_map] as aliases for the plugin’s [wp_quadratum] shortcode.
  • Added: Ability for the plugin’s shortcodes to be made configurable, on and off.
  • Added: Ability to backfill the response of the Foursquare API, via Factual’s reverse geocoder, to cope with cases when a Foursquare venue doesn’t have a complete set of metadata attributes to be used in conjunction with the locality shortcodes.
  • Added: New filter, wp_quadratum_locality, to filter and amend the output of the shortcode.
  • Fixed: Detect and trap an invalid or empty response from the Foursquare API, preventing numerous PHP warnings from polluting a post or page.
  • Other: Fully compatible with WordPress v3.7 “Basie”.

v1.3.0

  • Released: 2013.08.23
  • Added: Support for HERE, Leaflet, MapQuest Open and Bing maps.
  • Added: All maps API JS now loads in the page footer to speed up overall page loading times.
  • Added: Support for a new filter, wp_quadratum_checkin giving full access to all the Foursquare checkin metadata that the Foursquare API returns.
  • Added: Support for specifying the height and width of the map as a percentage as well as in px.
  • Fixed: Update the admin ‘Foursquare’ tab to use the new app registration URL. Adjust the help text to reflect the new app registration layout on foursquare.com/developers/register.
  • Fixed: Updated Mapstraction support to pull JS code from mapstraction.com rather than github.com/mapstraction/mxn to work around new GitHub content serving policies.
  • Removed: Support for filtering out private checkins; the Foursquare API no longer supports this.
  • Removed: Support for the CloudMade maps API; this has now been superseded by Leaflet maps.
  • Removed: Support for the Nokia maps API; this has now been superseded by HERE maps.
  • Removed: Support for authenticating Nokia maps via WP Nokia Auth; Nokia maps are now superseded by HERE maps.
  • Removed: Support for the Widget ID field from the plugin’s widget; the plugin now uses the WordPress assigned widget instance.
  • Other: Transitioned to WP_Mapstraction from WP_MXNHelper.

v1.2.0

  • Released: 2012.11.06
  • Added: Support for the wp_quadratum_strapline filter.
  • Added: Enqueue non-minified versions of the plugin’s CSS and JS files if WP_DEBUG or WPQUADRATUM_DEBUG are defined.
  • Other: Updated to latest versions of WP_PluginBase and WP_MXNHelper.
  • Other: Moved all submodule classes/libraries from the plugin’s root directory to /includes.

v1.1.0

  • Released: 2012.07.01
  • Added: Support for Nokia, CloudMade, Google and OpenLayers maps via Mapstraction
  • Added: Split plugin settings and options into Foursquare, Maps, Defaults and Colophon tabs
  • Added: [wp_quadratum] shortcode to allow a checkin map to be embedded in posts and pages.
  • Fixed: Support for Internet Explorer compatibility for Nokia Maps.

v1.0.2

  • Summary: Minor fixes to widget HTML structure
  • Fixed: Non W3C/HTML4 compliant widget code which caused the map not to be displayed when viewed with Internet Explorer

v1.0.1

  • Summary: Minor fixes to PHP base class.
  • Fixed: An issue with an old version of WP_PluginBase, the PHP class which WP Quadratum extends.

v1.0

  • First version of WP Quadratum released