Yes, same issue here. When I click on an event in the calendar it shows the correct URL in the address bar but the full calendar is displayed rather than the event post.
π
I’ve had the same problem. I’ve been able to confirm that this issue was specifically related to the 3.1 upgrade.
Apparently this has something to do with the way the plugin is rewriting the permalinks. When I changed my permalink structure to the default ‘Day and name’ or ‘Month and name’ settings it starts to work again.
Hi Guys
Same problem here. It is since the upgrade to 3.1 also.
This is an integral part of my site and I really want this to work.
If you have any solutions I would love to hear them.
Can I change only the permalink structure for the events calendar or will this change the whole site.
I use the permalink structure of category and post name at the moment and naturally with over 400 indexed pages I do not want to change this.
A solution would be good and I am all ears.
Thanks in advance.
As joemcgil said, take a look at http://wordpress.org/support/topic/31-rewrites, it may help.
Hey w03d – can you elaborate on how you implemented the fix code:
remove_filter('template_redirect', 'redirect_canonical');
Do you add it to the __construct() function, or where?
There are many event calendar plugins. Could you link to the one you are using? Also, which permalink structure exhibits the problem? Which web server are you using? Apache, IIS6, IIS7, IIS7.5?
Hey Ryan, the plugin is actually called ‘The Events Calendar’ – http://wordpress.org/extend/plugins/the-events-calendar/ (creative right?)
I think I’ve narrowed down the issue to the rewrite function that the plugin calls by using add_filter( ‘generate_rewrite_rules’ … (line 335 in the-events-calendar.class.php if you’re looking at the code).
The actual rewrite function is this:
public function filterRewriteRules( $wp_rewrite ) {
if( $useRewriteRules = eventsGetOptionValue('useRewriteRules','on') == 'off' ) {
return;
}
$categoryId = get_cat_id( The_Events_Calendar::CATEGORYNAME );
$eventCategory = get_category( $categoryId );
$eventCats = array( $eventCategory );
$childCats = get_categories("hide_empty=0&child_of=$categoryId");
$eventCats = array_merge( $eventCats, $childCats );
$newRules = array();
foreach( $eventCats as $cat ) {
$url = get_category_link( $cat->cat_ID );
$base = str_replace( trailingslashit( get_option( 'siteurl' ) ), '', $url );
$newRules[$base . 'month'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=month';
$newRules[$base . 'upcoming/page/(\d+)'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=upcoming&paged=' . $wp_rewrite->preg_index(1);
$newRules[$base . 'upcoming'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=upcoming';
$newRules[$base . 'past/page/(\d+)'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=past&paged=' . $wp_rewrite->preg_index(1);
$newRules[$base . 'past'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=past';
$newRules[$base . '(\d{4}-\d{2})$'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=month' .'&eventDate=' . $wp_rewrite->preg_index(1);
$newRules[$base . '?$'] = 'index.php?cat=' . $cat->cat_ID . '&eventDisplay=' . eventsGetOptionValue('viewOption','month');
}
$wp_rewrite->rules = $newRules + $wp_rewrite->rules;
}
The only time this breaks is when permalinks have been set to include the category name in the URL (i.e. /%category%/%postname%).
A change in 3.1 is tripping up the plugin’s in_event_category( ) function. 3.1 now sets the ‘cat’ query var when resolving /%category%/%postname%/ permalinks. 3.0 did not.
A quick fix is to change this block of code in in_event_category():
if( $cat_id == $this->eventCategory() ) {
return true;
}
to this:
if( !is_singular && $cat_id == $this->eventCategory() ) {
return true;
}
We’ll look at fixing this in WP for 3.1.1.
@ryan – you rock! Thanks so much.
Ryan –
re: quick fix
What file is the above block of text found in?
Thanks Ryan,
That fixes the issue with single post pages but doesn’t fix (what I assume is a related issue) with ‘previous’ or ‘next’ posts on the list page when the Event plugin is in “pretty URL mode.”
Turning off that mode fixes the issue and will work for now until things get patched up.
@dcdblu – the line Ryan edited above is in the plugin file /the-events-calendar/the-events-calendar.class.php on line 684.