Instantly share code, notes, and snippets.

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.

Show comment
Hide comment
@ky78

ky78 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...

ky78 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