Google indexation and pagination

For best google indexation and search engine crawler bandwidth management, please read this post and then check your events website:

Events date navigation  and rel=”next” and rel=”prev”

Main calendar canonical tag

  • Your main calendar page should have a canonical tag in the header
  • wp default themes already generates a canonical tag for pages
  • Assists in telling google that alternate views are just that – ie: “alternate” and not duplicate data. EG: if you are showing views like agenda and calendar, the default first view will have the canonical tag.

Use Google webmaster parameter tools

You may wish to tell google to ignore certain parameters (eg not to ‘crawl’ into the future? ) – or maybe not… your call

  • this could maybe reduce the impact of google crawlers – else they get so clever now, they try t o follow all GET and POST parameters.
  • some parameters that may be in use in your calendar and widget date navigation are:
    • days,
    • months,
    • events,
    • start,
    • startoffset,
    • agenda,
    • calendar

Judicious use of upcoming events widgets

Think carefully about Seo, sidebars, widgets and what pages have sidebars.  Should  that events  calendar and upcoming events list be on every pageand post? Some notes:

Google indexing, bandwidth and calendar parameters


spiders clogging up the works
March 2012 in Australia has been very wet - the spiders don't like it any more than we do!


The events plugin does what it can to help get your events indexed (see below).  Dynamic event lists change frequently (daily or more?) as time goes by – they drop off old events and show the newer ones.  These frequent “updates” could perhaps cause more attention from a search engine.    Widgets (box and calendar) that have internal links back to the main calendar page can also make google think that page is important.  Especially if those widgets are on every page.

Maybe that is what you want, and maybe it is not!  You may need to control it.

You the webmaster can help the seach engine spiders or crawlers further to index your site while not chomping all your bandwith.

How events plugin helps indexing:

Other tools to manage indexing and bandwidth

How to get your events indexed:

How to manage bandwidth


  • Think carefully about using multple views and about the sidebar widgets that can generate a plethora of links back to the calendar page -Get other measures  in place to avoid overemphasising the calendar page importance
  • Attempting to avoid bandwith issues may affect indexing – wrt query string parameters.  Best is to ‘tell’ google what to focus on.  See webmaster guidelines
  • It seems google will be indexing the POST variables too and they advise sticking with GET (ie the query parameters)
  • Hmm – maybe adding rel=”next” and “prev” to pagination will help avoid diluting page rank? See googles video or article
  • Also we should consider sidebar widget issues – links on every page that point to the same  may overly highlight the calendar page and make it more important – sometimes this is intentional and sometimes not.  Related question via Brad Gosse: 2010/12/06/do-tag-clouds-in-sidebars-affect-seo-ranks?    Should the widgets have no follow links on certain links ? …. but we want that indexing….maybe just the rel control?

External ics files timing out?

Slow server? Ics refresh problems too frequent?

In version 4.0.24 of amr-ical-events-list, the default http timeout in wordpress can be extended for ics fetches.  5 is the wp default.

Note: using a large number may mean that your calendar page will be slow when it is time to refresh the ics files.  Consider the cache frequency too.

See also

Advanced admin settingfor timeouts

How to tell if necessary?

If you occasionally see a little exclamation mark on your calendar page – this is an attempt to warn you that  a cached version of the ics file is being used and events may be out of date.  Hover over it to see the message.

Want more info ?

If you are a logged in admin user, add ?debug&refresh to the url and hit refresh.  A debug listing will be produced while it tries to refresh. Scroll down to see the result.

Debug message for logged in admin users
Ics file does not exist

Html in descriptions in ics feed generation

What to do about html in event descriptions?

Some applications will cope with the html, but there are other applications which do not. EG: Google calendar – does not faciliate html nor  issue it in feed.

HTML in the description field is not explicitly forbidden, however it is probably not recommended.  There is some provision for html to be explicitly allowed for, either:

  •  in the description using an ALTREP parameter,
  • or in an ‘experiemental’  X field, X-ALT-DESC,

WordPress allows us to create events with html in them.  So what to do when the ics feed is generated?

Retaining the html – two possibilties:

Link to the html representation:

DESCRIPTION;ALTREP="":This is an example description.

Provide separate field with html representation:

Outlook will recognise:

X-ALT-DESC;FMTTYPE=text/html:<p>This is an example description.</p>


This update does both, as well of course ,as stripping the html from the description field in the ics file.  This means images will be stripped too (only for the feed – do not panic!)

More information for the technically minded



Custom fields for events

There are several good plugins that allow one to create custom fields (or indeed one can just add the fields yourself manually!).

The events plugin has no easy way of knowing what custom fields have been created and how they should be displayed.  See the bear hunt approach below. Custom fields could be

  • images?,
  • urls?,
  • boolean values where the displayed value is something else – maybe the field name?
  • maybe an array – the result of a multi choice select
  • an array of non homogenous values…

Add the custom fields to the post content

Ideally the plugin that creates the custom fields also provides a way to add them to the post content, especially if there is special formatting involved (which the events plugin would not know about).  This is what the sharing and social media plugins do… add stuff to the post content.

The events plugin applies all shortcodes and filters to the content, so the creating plugins shortcodes or filters should work to includes those custom fields in the post content.

If the plugin you are using does NOT offer a way to add the info, then you could consider a site specific plugin where you add your own filter or shortcode to display the values however you want them displayed.

Add custom fields elsewhere in the events list

If adding the custom fields to the post content is not ok, then you need some advanced php smarts (or my custom services -:) ).   The plugin offers a multitude of filters and pluggable functions where you can add code to do your own thing.

Not recommended unless your needs are truly not satisfiable in other ways: You could even write your own listing function – receive the list of events, including post id’s and list it all anyway you want, looking up any additional data.

Reinvent the wheel

An option being considered is ‘reinventing the wheel’ – basically adding own feature to add custom fields. At least then this plugin would know what the fields are and how they should be formatted.   This may be available in a future.


Another option is to pick ‘best of breed’ and deep integrate with an existing plugin.    This would put the events plugin at the mercy of change and updates to the other plugin and doesn’t get around the problem that some users will want to use other plugins anyway.

Still thinking about this one.

The difficult way… I’m not afraid…

Colour in sheet courtesy of scholastic books
There is a ‘difficult’ way that the events plugin could offer these other fields to you to design where you want them in the events list. I call it ‘going on a bear hunt’ and have done this in the amr-users plugin for user reporting.  It has a lot of overhead both in admin settings and run time.

“There is no way around it, gotta go through it” – the entire meta table would have to be searched through to find all the fields that could exist for a post type. It can only find what data is already created.  It still has no way of knowing how they should be formatted.  In the wordpress user reporting plugin it does a best guess and offers some options.

The events plugin may do something similar in the future, note it is not a small task.

If you’d like to have a say on this, either comment here, or add a feature request note in the forum.


Problem with Dates/Time – Off by 1 Hour?

If you are using amr-events or amr-ical-events-list you will not have this problem!

Every time a zone somewhere in the world kicks on to daylight saving or off for that matter, I see a bunch of support questions popping up about their event times being off by an hour.    (I monitor wordpress support, stackexchange and wpquestions, and maybe a few more…..)

From a favourite cartoon source - thanks

Imagine the confusion this can cause where clients may have subscribed to calendar feeds and have the wrong times.

PHP datetime objects and functions

If people are very lucky, the plugin that they are using has some good coding and is using php DateTime objects with timezone support, and the only problem is that their wordpress timezone is set as a GMT offset, not as a timezone.

That is easily fixed! (goto wordpress general settings)

However all too often the plugin developer has failed to appreciate

  • the complexities of times around the world,
  • timezones,
  • daylight saving and
  • most importance of managing recurring events in one timezone for a display in another where one zone changes daylight saving.  Very easy to generate the wrong times for a recurring event without realising it!
  • even worse governments sometimes change the date/time of the switchover (ok not that often, but it does happen, and then you hope your php installation gets updated with the timezone definitions)


If it is not a simple wordpress timezone setting, then these things are NOT easy to fix and will involve changes to code:

  1. Change to use php DateTime Classes for all date logic .If they are using unix time and not  php datetime objects, it is almost impossible to get it right.  It’s a fairly major rewrite to change all date logic to use the DateTime objects and functions.
  2. If already using, it maybe that the intricacies of recurring event logic have won out.  See below for logic help.

Developers and event website managers should read:



User Interface for entering events

Scott Adams (Dilbert) explains why sometimes entering events (dates) can be tiring.  He puts it down to too many different spatial models.

He also proposes an alternative (a one spatial model) events calendar interface.

Interestingly one commenter offers the google ‘ figure it out from the text’ method.  Perversely that does not work for me.  I have been influenced by my husband to get in the habit of recording the planned date and time in th text as well as in the date fields as a ‘backup’.  Too many tools make it so ‘easy’ to shift an event, that it sometimes happens inadvertently…. If you haven’t recorded the original somewhere… you’re in trouble!

Any way point of the post was to give you all a place to offer any suggestions.  Yes please comment meaningfully if you want to.  If you like the current interface and prefer it to stay that way, please say so too. (hard to please everyone all the time, but I try)

Quite some thought did go into the current amr-events interface:

  • datepicker for dates, but not a time picker (too limiting, not enough value added)
  • flexible date entry if you want – it’ll do its best guess to figure out what you want rather than insisting how you should enter the date.
  • flexible time entry – lots of logic to work out what you want – it is not going to insist on 10:00, you can enter just 10
  • if no time – will assume all day (you don’t have to tick the all day)
  • it’ll echo back the day of week to you when saved for confirmation
  • in settings one choose the date and time entry format.  See also date formats by country
    • english oriented with dd/mm/yy
    • american with that weird month first thing they do
    • europeans who like to adhere to the international standard yyyy-mm-dd
    • 24 hour clock or
    • 12 hour am/pm
    • define the separators
  • Choose also the start of week (Monday, Sunday, Saturday etc)