Skip to content

Instantly share code, notes, and snippets.

@cliffordp cliffordp/functions.php
Last active Aug 23, 2018

Embed
What would you like to do?
The Events Calendar: Change Event Archives' iCalendar export links to webcal://
<?php
/**
* The Events Calendar: Change Event Archives' iCalendar export links to webcal://
*
* This causes the "iCal Export" button to recommend to calendar applications
* (e.g. Apple, Outlook, etc.) that they should *subscribe* instead of *download*.
*
* We have to use JavaScript instead of PHP because the "Export Events"
* iCalendar link gets built via JS via
* /wp-content/plugins/the-events-calendar/src/resources/js/tribe-events.min.js
* (the script with the `tribe-events-calendar-script` handle).
*
* If we were to use PHP (using the `tribe_get_ical_link`,
* `tribe_get_single_ical_link`, and `tribe_events_force_filtered_ical_link`
* filters), the link would be static instead of being dynamic to things like
* an Event Category archive page.
*
* @link https://gist.github.com/cliffordp/be034504a2c530495b7d58e704352069
* @link https://tribe.uservoice.com/forums/195723-feature-ideas/suggestions/31305556-add-true-subscribe-functionality-for-ical-google
*/
add_action( 'wp_footer', 'cliff_ical_link_js_override_webcal', 100 );
function cliff_ical_link_js_override_webcal() {
wp_enqueue_script( 'jquery' );
?>
<script type="text/javascript">
jQuery( document ).ready( function ( $ ) {
var url = $( 'a.tribe-events-ical' ).attr( 'href' );
url = url.replace( 'https://', 'webcal://' );
url = url.replace( 'http://', 'webcal://' );
$( 'a.tribe-events-ical' ).attr( 'href', url );
} );
</script>
<?php
}
@ky78

This comment has been minimized.

Copy link

commented Aug 6, 2018

Can you test the following link -> It seems to be working as a true subscribe link for me. If so, I think it would be great to share with others.
webcal://yoursite.org/calendar/list/?tribe_paged=0&tribe_event_display=list&ical=1&tribe_display=list
Please note that we use /calendar/ instead of /events/ after the domain.

Question -> do you have a snippet that can change the current URL to
webcal://yoursite.org/calendar/list/?tribe_paged=0&tribe_event_display=list&ical=1&tribe_display=list

Currently, I need to email people the link...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.