<?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
}