Calendar: Developer Hooks
Plugin paths #
gravityview/calendar/scripts/fullcalendar
Modify the FullCalendar core script used.
| Parameter | Type | Default | Description |
|---|---|---|---|
$path
|
string
|
{URL of plugin directory}/lib/fullcalendar/main.js
|
Full URL to the jQuery FullCalendar file. |
gravityview/calendar/scripts/fullcalendar/locales_dir_url
Modify the URL to FullCalendar locales. This can be used to point to your own translations.
| Parameter | Type | Default | Description |
|---|---|---|---|
$locales_url
|
string
|
{URL of plugin directory}/lib/fullcalendar/locales/
|
URL to FullCalendar locales directory |
FullCalendar overrides #
gravityview/calendar/options
Modify all FullCalendar options in an array.
| Parameter | Type | Default | Description |
|---|---|---|---|
$calendar_options
|
array
|
Array of settings used when rendering FullCalendar | |
$form_id
|
int
|
Current form ID | The ID of the form connected to the calendar |
$feed_id
|
int
|
Current feed ID | The ID of the calendar feed currently being shown |
Override the calendar language
Override default calendar locale (automatically set to en , or the language of the current WordPress site):
add_filter('gravityview/calendar/options', function ($calendar_options, $form_id, $feed_id ) {
$calendar_options['locale'] = 'fr';
return $calendar_options;
}, 10, 3 );Display events as a full-width block
Display events as a block, not as a bullet list, on the grid layout, using the eventDisplay setting. In addition to being full-width in the calendar, this allows applying background colors:
add_filter('gravityview/calendar/options', function ($calendar_options, $form_id, $feed_id ) {
$calendar_options['eventDisplay'] = 'block';
return $calendar_options;
}, 10, 3 );To set showNonCurrentDates to false
Here’s an example of modifying the GravityCalendar output to disable showNonCurrentDates , but only for Calendar feed #5:
add_filter( 'gravityview/calendar/options', function ( $calendar_options, $form_id, $feed_id ) {
// Only modify the setting for Calendar #5
if( 5 !== $feed_id ) {
return $calendar_options;
}
$calendar_options['showNonCurrentDates'] = false;
return $calendar_options;
}, 10, 3 );To force times to be displayed in a specific way
The FullCalendar script displays times in a truncated manner on the month grid view. If you want to force times to be displayed with a 2-digit minute, you can with the filter below.
You can find full reference to the date and time formatting options here.
add_filter('gravityview/calendar/options', function ($calendar_options, $form_id, $feed_id ) {
$calendar_options['eventTimeFormat'] = [
'hour' => 'numeric',
'minute' => '2-digit',
'meridiem' => 'short'
];
return $calendar_options;
}, 10, 3 );gravityview/calendar/extra_options
Modify extra options used in the plugin’s UI that aren’t standard to FullCalendar.
This is a way to pass additional data to the FullCalendar configuration object in a way that won’t affect initialization. For example, navigateToEvents is a custom calendar option and will throw an error if used to initialize a FullCalendar instance in the UI.
This filter is internal, but you may want to use it for similar reasons.
Rendering & content overrides #
gravityview/calendar/settings/entry_status
Modify the status used to find matching entries. If set to false , no status will be defined, and all entries will be returned.
| Parameter | Type | Default | Description |
|---|---|---|---|
$status
|
string, false
|
'active'
|
Gravity Forms entry status. Options: 'active', 'spam', 'trash', or false
|
gravityview/calendar/settings/sort_order
| Parameter | Type | Default | Description |
|---|---|---|---|
$sort_order
|
array
|
[ 'key' => {start date}, 'direction' => 'ASC' ]
|
Sort order with key and direction values.
|
$form_id
|
int
|
Current form ID | ID of the current feed being processed |
$field_map
|
array
|
Current feed ID | Gravity Forms field map array of feed fields mapped to calendar settings (e.g., start_time, end_time) |
/**
* Overrides the sort order to be sorted by form field #3 when using Calendar #22
*/
add_filter( 'gravityview/calendar/settings/sort_order', function ( $sort_order, $feed_id, $field_map ) {
if( 22 !== $feed_id ) {
return $sort_order;
}
return array(
'key' => 3,
'direction' => 'DESC',
);
}, 10, 3 );gravityview/calendar/events/source_data
Used to populate the form entries that are displayed in the calendar. You can override by filtering the entries using a priority greater than 10 .
Note: $from_date and $to_date values are created with strtotime() from Start Date and End Date field values. They are false if there was an error parsing the value when creating the timestamp.
| Parameter | Type | Default | Description |
|---|---|---|---|
$entries
|
array
|
[]
|
Form entries with title, start, end, and description (optional) keys.
|
$feed_id
|
int
|
0
|
ID of the current feed being processed |
$from_date
|
int, false, null
|
null
|
Start date timestamp used to filter events. |
$to_date
|
int, false, null
|
null
|
End date timestamp used to filter events. |
Entries are expected in the following format:
array(
array(
'title' => 'Event One',
'start' => '2022-04-12T10:30:00',
'end' => '2022-04-12T12:30:00',
'description' => 'Optional description!',
),
array(
'title' => 'Event Two',
'start' => '2022-05-13T10:30:00',
'end' => '2012-05-13T12:30:00',
'description' => 'Description optional!'
),
[...]
)The entries array is parsed by the GV_Extension_Calendar_Feed::calendar_events() method, which transforms the array into the expected calendar format.
gravityview/calendar/events/exclude
Prevent entries from being displayed in the calendar by returning an array of IDs.
Note: If an entry ID is included in this list, it will still be shown if the event is on the “include” list (see the gravityview/calendar/events/include filter).
| Parameter | Type | Default | Description |
|---|---|---|---|
$entry_ids
|
array
|
[] or int[]
|
Array of entry IDs to be displayed based on feed settings. May be empty array. |
$form
|
array
|
Current form | Gravity Forms form object connected to the calendar feed |
$feed
|
array
|
Current feed | Calendar Gravity Forms feed object |
$field_map
|
array
|
Current feed ID | Gravity Forms field map array of feed fields mapped to calendar settings (e.g., start_time, end_time) |
$entries
|
array
|
[] or array[]
|
Array of full entries from $entry_ids, instead of just the IDs.
|
gravityview/calendar/events/include
Show these events in the calendar.
| Parameter | Type | Default | Description |
|---|---|---|---|
$entry_ids
|
array
|
[] or int[]
|
Array of entry IDs to be displayed based on feed settings. May be empty array. |
$form
|
array
|
Current form | Gravity Forms form object connected to the calendar feed |
$feed
|
array
|
Current feed | Calendar Gravity Forms feed object |
$field_map
|
array
|
Current feed ID | Gravity Forms field map array of feed fields mapped to calendar settings (e.g., start_time, end_time) |
$entries
|
array
|
[] or array[]
|
Array of full entries from $entry_ids, instead of just the IDs.
|
gravityview/calendar/events/do_shortcodes
Modify whether to process shortcodes in the event title and event description.
| Parameter | Type | Default | Description |
|---|---|---|---|
$do_shortcode
|
bool
|
true
|
True: Process shortcodes in title and description. False: don’t! |
$form
|
array
|
Current form | Gravity Forms form object connected to the calendar feed |
$feed
|
array
|
Current feed | Calendar Gravity Forms feed object |
$field_map
|
array
|
Current feed ID | Gravity Forms field map array of feed fields mapped to calendar settings (e.g., start_time, end_time) |
gravityview/calendar/shortcode/render/element_attributes
| Parameter | Type | Default | Description |
|---|---|---|---|
$attributes
|
array
|
See below | Array of HTML attributes to be applied to the calendar container |
| Key | Type | Default | Description |
|---|---|---|---|
class
|
string
|
gv-fullcalendar
|
CSS class for the container |
data-feed_id
|
int
|
$feed_id
|
The ID of the feed being rendered. |
data-calendar_id
|
string
|
wp_generate_password()
|
Simple hash to differentiate multiple calendars. |
data-view_id
|
int or null
|
$view_id` | The ID of the current View, if embedded inside a GravityView View |
Feed setting filters #
gravityview/calendar/settings/total-event-limit
Modify the total number of events displayed on a calendar.
| Parameter | Type | Default | Description |
|---|---|---|---|
$total_event_limit
|
int
|
1000 | Maximum total number of events to fetch |
$feed_id
|
int
|
Current feed ID | The ID of the calendar feed currently being shown |
gravityview/calendar/settings/fields/date
Override the field types shown in the feed configuration when selecting Start Date and End Date.
| Parameter | Type | Default | Description |
|---|---|---|---|
$field_types
|
array
|
['date', 'date_created', 'date_updated']
|
Default field types used for populating the Start Date or End Date settings. |
Allow for text fields to be used in the feed configuration
If you allow entering dates into a text field—not recommended due to inconsistent formatting!—you may want to use the field as the “Start Date” or “End Date” values. The code below will allow that:
/**
* Add Text fields to the list of fields to display when selecting Start Date and End Date.
*
* @param array $field_types
*
* @return array Field types, with "text" added.
*/
add_filter( 'gravityview/calendar/settings/fields/date', function ( $field_types ) {
$field_types[] = 'text';
return $field_types;
} );gravityview/calendar/settings/fields/time
Override the field types shown in the feed configuration when selecting Start Time and End Time.
| Parameter | Type | Default | Description |
|---|---|---|---|
$field_types
|
array
|
['time', 'date_created_time', 'date_updated_time']
|
Default field types used for populating the Start Time or End Time settings. |
gravityview/calendar/settings/fields/location
Override the field types shown in the feed configuration when selecting Event Location.
| Parameter | Type | Default | Description |
|---|---|---|---|
$field_types
|
array
|
['address']
|
Default field types used for populating the Event Location setting. |
gravityview/calendar/settings/fields/url
Override the field types shown in the feed configuration when selecting Event URL.
| Parameter | Type | Default | Description |
|---|---|---|---|
$field_types
|
array
|
['url', 'website']
|
Default field types used for populating the Event URL setting. |
Calendar subscription cache filters #
Since GravityCalendar 2.21.0, subscription calendars (the .ics feed that calendar apps poll) are generated once, stored, and served from that stored copy. The copy is rebuilt when it expires, when the feed is saved, and when entries are added, edited, or deleted. These filters control that behaviour. The complete, always-current reference for every GravityCalendar hook lives on our developer documentation site: GravityCalendar on gravitykit.dev.
gk/gravitycalendar/ics-export/cache/enabled
Whether generated subscription calendars are stored and served from the stored copy. Return false to generate the calendar on every request, site-wide or for one feed.
bool $enabledWhether the generated calendar may be stored. Defaulttrueint $feed_idThe feed being generated
gk/gravitycalendar/ics-export/cache/lifetime
How long a stored subscription calendar is served before it is rebuilt.
int $lifetimeSeconds. Default3600(one hour)int $feed_idThe feed ID
gk/gravitycalendar/ics-export/cache/rebuild-timeout
How long a rebuild may run before its claim is considered abandoned and another request is allowed to rebuild the calendar.
int $secondsTimeout in seconds. Default600(ten minutes)int $feed_idThe feed ID
Example: serve feed 12 fresh on every request, and keep every other feed’s stored copy for 15 minutes instead of an hour.
add_filter( 'gk/gravitycalendar/ics-export/cache/enabled', function ( $enabled, $feed_id ) {
return 12 === $feed_id ? false : $enabled;
}, 10, 2 );
add_filter( 'gk/gravitycalendar/ics-export/cache/lifetime', function ( $lifetime, $feed_id ) {
return 15 * MINUTE_IN_SECONDS;
}, 10, 2 );