SEATT updated to 1.4.0

I’ve updated Simple Event Attendance (SEATT WordPress plugin) to version 1.4.0. This brings bug fixes, and updates in line with the release of WordPress 4.5.3, as well as the upcoming 4.6.0 release.

The plugin can now also be found on GitHub: https://github.com/sourcez/SEATT to help you track changes if you’ve made any modifications yourself.

This covered some of the feature requests at http://www.3cc.org/blog/2015/11/seatt-feature-wishlist/, as well as fixes for get_currentuserinfo in WP 4.5:

* Replaced get_currentuserinfo with wp_get_current_user to fix deprecation issue
* Fixed bug where users couldn’t register to an event with limit set to 0 (unlimited)
* Fixed bug where server time was used rather than blog local time on front end form
* Updated admin and template to allow use of TinyMCE for WYSIWYG editor. Can now also add images, colours etc.

SEATT Feature Wishlist

Updated 31/07/2016 after 1.4.0 release.

Since I’ve updated SEATT there’s been requests for functionality. The ones I’ve captured are below, in a rough priority order:

  1. Repeatable/recurring events – Some sort of functionality to allow repeatable events – whether this be decoupling of event details from dates, or some other mechanism.
  2. Event calendar shortcode and layout – Allow you to group events into categories and display all relevant events in a list view on a post.
  3. Custom page layout to help display events for #2.
  4. Allow admin to use tinymce content editor. Completed in 1.4.0
  5. Register for events without requiring an account – I’m currently planning to do this via email confirmation and with a captcha, but need to test it.
  6. Email notification – More broad email notification, both upon registration (to user and admin), and also allowing admin to email users.
  7. Custom list pages and fields – Allow admins to change what information the plugin lists, and where it draws usernames and names from.
  8. Allow other users to see comments on short-code form.
  9. Additional columns in database to capture event details.
  10. Internationalisation, and custom locale options – This includes the option to allow the user to call an “Event” a “Ride” or similar.
  11. Custom redirect to put user back at entry page after login.

Thanks again to all of you for getting in touch, and to those of you who have provided snippets based on your modifications to the plugin. I’m hoping to get through at least a couple of these in the coming months.

SEATT updated to 1.3.0

I’ve updated Simple Event Attendance (SEATT WordPress plugin) to version 1.3.0. This brings bug fixes, and updates in line with the release of WordPress 4.3.1.

Firstly, an apology for taking so long to release another version – feel welcome to get in touch if you want to discuss changes you’ve made to your code in the interim. These are largely security changes, so it’s recommended that you update when you can. The database structure hasn’t changed, so you should experience no loss of data.

Changes:

  • Ensured the database elements all use the correct version of wpdb->prepare where needed, and tidied up any inconsistent usage where statements weren’t prepared. Thanks to J.D. Grimes for chasing me on this.
  • Made some text and layout changes throughout to work better with the WordPress default templates.

In the pipeline are a few more changes that should further improve functionality of the plugin:

  • Some sort of functionality to allow repeatable events – whether this be decoupling of event details from dates, or some other mechanism.
  • Selectable categories for lists, allowing you to put one shortcode into a post/page and get a list of all active events.
  • Anonymous registration – something that quite a few have asked for. It will be turned off by default but it is coming with captcha user verification.
  • Email notification – I haven’t explored this yet, but am hoping it can be done using internal wordpress functions.

Live at https://wordpress.org/plugins/simple-event-attendance/

As always, any feedback is very welcome.

Google Maps Distance (DistanceMatrix) API for UK in JSON

The postcode code has been updated to use Google’s distancematrix api, which provides a very different set of data from the old “as the bird flies” calculation (it calculates road distance, and provides transport options etc).

The following code is merely a demonstration, which can be seen here.

<?php
// Specify Postcodes to Geocode
$postcode1 = 'BH151DA';
$postcode2 = 'BH213AP';

// Set and retrieve the query URL
$request = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" . $postcode1 . "&destinations=" . $postcode2 . "&mode=driving&language=en-GB&sensor=false&units=imperial";
$distdata = file_get_contents($request);

// Put the data into an array for easy access
$distances = json_decode($distdata, true);

// Do some error checking, first for if the response is ok
$status = $distances["status"];
$row_status = $distances["rows"][0]["elements"][0]["status"];

if ($status == "OK" && $row_status == "OK") {

// Calculate the distance in miles
$distance = $distances["rows"][0]["elements"][0]["distance"]["value"];
$distance_miles = round($distance * 0.621371192/1000, 2);

echo 'The distance between '.$postcode1.' and '.$postcode2.' is '.($distance/1000).'Km ('.$distance_miles.' miles).';

} else {
    echo "Calculating the distance between your locations caused an error.";
}

?>

Having better error checking would also be a good idea if you plan to use the above code. Using &unit=imperial is optional, as Google always returns metres – so the code runs a basic calculation on these to convert to miles.

Facebook Like Buttons, &fb_xd_fragment=, Blank pages and SEO

This is a software development problem that’s been around for months now and yet still bugs thousands of users.

Any of your pages with facebook widgets on can result in URL’s like

www.example.com/page.php?fb_xd_fragment=

This has several implications. Firstly – it can cause blank pages through unwanted interactions with div areas on the page. We can solve this by adding the following fix just before the </body> tag. This came from http://forum.developers.facebook.net/viewtopic.php?id=60571&p=1 (temporary solutions)

<!-- Correct fb_xd_fragment Bug Start -->
<script>
document.getElementsByTagName('html')[0].style.display='block';
</script>
<!-- Correct fb_xd_fragment Bug End -->

The second, more long term issue is that this page will appear in search results alongside the normal page…resulting in duplicate content. Obviously you could just remove the like button but that’s not an ideal solution. So you can do a couple of things.

Head to webmastertools (https://www.google.com/webmasters/tools/home?hl=en) and add the fb_xd_fragment= as something that should be ignored on your site.

Filtering out fb_xd_fragment in Google Webmaster Tools
Filtering out fb_xd_fragment in Google Webmaster Tools

Another option is to use .htaccess and 301 redirects to clip out the &fb_xd_fragment=, which is a pain but very easily do-able and removes the requirement to put the display fix on every page. So try this (modified per your site) in your .htaccess.

RewriteCond %{QUERY_STRING} fb_xd_fragment=
RewriteRule ^(.*) http://www.example.com/$1? [R=301]

You could also ignore it and just hope facebook fixes it soon…yeahh bad choices right?