开发者 | room34 |
---|---|
更新时间 | 2023年4月9日 00:58 |
捐献地址: | 去捐款 |
PHP版本: | 7.0.0 及以上 |
WordPress版本: | 6.2 |
版权: | GPLv2 or later |
版权网址: | 版权信息 |
[ics_calendar url=""]
Be sure you are using the iCalendar subscription (ICS) URL (i.e. for importing into a calendar program), not the URL for viewing a calendar in a web browser. To test if you have the correct URL, paste it directly into your browser address bar. It should download an .ics
file, not display the calendar in the browser.Different calendar systems have different ways to obtain the feed URL. You may need to consult your calendar software's documentation for assistance. Find instructions for commonly used calendars below. You will also need to make sure that your calendar is public. Private calendars cannot be accessed by this plugin. Documentation quick links:
Use this shortcode, inserting your ICS feed URL between the quotation marks:
[ics_calendar url=""]
Be sure you are using the iCalendar subscription (ICS) URL (i.e. for importing into a calendar program), not the URL for viewing a calendar in a web browser. To test if you have the correct URL, paste it directly into your browser address bar. It should download an .ics
file, not display the calendar in the browser.
Yes! You can combine multiple calendars by including more than one feed URL in the url
parameter. Separate the calendar URLs with one space or a pipe |
character. Do not include any other delimiter characters, as they will be interpreted as part of the URL.
This may be due to your server's configuration. This plugin requires either the PHP cURL extensions, or the allow_url_fopen
PHP setting to be turned on. Check your PHP configuration or your server administrator if you think this may be the issue. You can also add debug="true"
to your shortcode and view your page to see debugging output which may provide additional details about any connection issues.
For performance, this plugin uses WordPress transients to store retrieved calendar data for one hour between requests to the calendar source server. If you have updated events that are not showing up in your page, visit the ICS Calendar page in your site admin and click the Clear Cached Calendar Data button.
PHP has two different ways of defining timezones: as a number of hours offset from GMT/UTC (e.g. "UTC-5"), or as a continent/city combination (e.g. "America/Chicago"). Timezones using UTC offsets do not handle Daylight Saving Time correctly (as noted in the PHP documentation). Please check your WordPress timezone settings (Settings > General > Timezone). If it is set to a UTC offset, change it to the city closest to your location, in the same timezone. As of version 6.0 you can also set the timezone within the shortcode using the tz
parameter. (Again, be sure to use a named region/city timezone, not a UTC offset.)
Our User Guide includes extensive documentation of all features of the plugin, is frequently updated, and is translated into all languages supported by the plugin.
The paid ICS Calendar Pro add-on includes additional layout options, tools for customizing the calendar's appearance more easily than directly editing CSS, an improved insertion tool, and more. We are also constantly adding new features and refinements to both the free and paid versions. If you have suggestions for features you'd like to see or any other additional input, please let us know by following the support link on the admin page or in the WordPress support forums! The base plugin will always be free to use.
htmltagtitle
, htmltagmonth
and htmltagdate
parameters, to allow SEO-focused developers to control the tags used for the calendar title, month and date headings in the calendar. (The month headings are used in month and list view; the date headings are used in list view only. Neither is used in week view.) Values are the names of the HTML tags (without the angle brackets), e.g. htmltagmonth="div"
. Accepted values are: h2
, h3
, h4
, h5
, h6
, p
, div
and header
. (h1
is deliberately excluded; for SEO purposes h1
should only appear once per page as the main title heading, and does not belong in ICS Calendar output.) The defaults are unchanged; if these parameters are omitted from the shortcode, ICS Calendar will continue to use h2
for the calendar title, h3
for month and h4
for dates. Note: This featured required some minor CSS and JavaScript changes: code that was previously referring directly to h2
, h3
and h4
tags is now using the corresponding .ics-calendar-title
, .ics-calendar-label
and .ics-calendar-date
CSS classes, respectively. If you have custom CSS or JavaScript in your site based on these tags, you'll need to change it to use the CSS classes instead.r34ics_allowed_heading_tags()
function to support new htmltagtitle
, htmltagmonth
and htmltagdate
parameters.R34ICS::shortcode()
.limitdays
is set, when using the new defaults introduced in v.10.6.r34ics_scrape_url_from_string()
to support single quotes as attribute value delimiter in HTML link tags.readme.txt
content.CONTACT
, DURATION
, FREEBUSY
, GEO
, and RESOURCES
fields to output .ics files generated when using the eventdl
option.unbind()
to jQuery for stepping through previous/next month links in navigation, to resolve an issue that caused the links to skip one or more months on pages that contain multiple AJAX-loaded calendars.guid
in R34ICS::shortcode()
from null
to an auto-generated UID using r34ics_uid()
function. This was already happening in R34ICS::display_calendar_ics_data_init()
anyway, but by moving it to the shortcode()
method, temporary AJAX container HTML elements can now have the same id
attribute as the .ics-calendar
element that will replace them, which will be useful for future AJAX-related development.change
to click
for color key checkboxes. Should have no significant impact on typical usage but may help facilitate some future development..hide()
and .show()
to using a CSS class. This will allow for greater flexibility in how different views handle the checkboxes.maskinfo
in R34ICS::event_description_html()
to hide the event details box regardless of the filler
value.combinemultiday
to month (and week) view table layouts only.r34ics_init()
call from jQuery(function())
into jQuery(window).on('load')
to ensure page is fully ready before execution.R34ICS::display_calendar()
, mainly around standardizing variable names between ICS Calendar and ICS Calendar Pro.r34ics_init_start
and r34ics_init_end
custom jQuery events at start and end of r34ics_init()
function, allowing developers to add their own callbacks that fire off just before and after ICS Calendar initializes itself on the page.limitdayscustom
because it is not actually deprecated, and may be legitimately included in the data passed by ICS Calendar Pro.r34ics_location_map_link()
introduced in v.10.9.0 that may trigger PHP warnings in some ICS Calendar Pro views.paginationposition
parameter, with accepted values above
, below
and both
, to determine where pagination links appear in list view. Default is below
.CONTACT
, DURATION
, FREEBUSY
, GEO
, and RESOURCES
to event data array, to support enhancements in this version plus future development.mapsource
parameter, accepting values google
, bing
or openstreetmap
. Defaults to google
if left blank. Note: This parameter has no effect unless location="maplinks"
is also set.resources="true"
parameter to show resources (rooms, equipment, etc.) assigned to the event, in event description hover box/lightbox. (Note: This data is not present in most feeds.)organizer
and location
options to incorporate data from CONTACT
and GEO
, if present in the feed. Note: Because we do not have "real world" feed examples that use these properties, this functionality is considered "beta" at this time. Your feedback is welcomed!combinemultiday
to prevent its block element styling from affecting list-style views.r34ics_feed_colors_css()
that would prevent output unless either the color
or tablebg
shortcode parameter was set. This ensures that the r34ics_feed_colors_css
filter can be applied in conditions that are independent of those parameters.combinemultiday
presentation._r34ics_array_filter_recursive()
function for use by _r34ics_debug()
to produce more legible output for feeds with very long event descriptions.maskinfo
to more effectively conceal event details when this option is being used.combinemultiday
setting.legacyparser
parameter introduced with use of the Event
class's new __get
method in v. 10.8.6.2. (Note: This fix, as currently coded, makes legacyparser
incompatible with hideprivateevents
.)combinemultiday="true"
. This is designed to address a common request for better handling of multi-day events. Due to the way the Month and Week view templates are designed, it is not feasible to make these into HTML elements that truly span across multiple day cells in the calendar table. This update does not restructure the templates; instead, it uses an unconventional CSS technique to simulate an element spanning multiple cells. Please let us know about any issues you encounter, or your general feedback, in the support forums.*ics-calendar.php
header comments rather than hardcoding a constant value.r34ics_version
option using the get_option()
function.R34ICS::_date_events_sort()
method to always group multi-day events first before single-day all-day events. This should reduce the likelihood of combinemultiday
"breaking" if a single-day all-day event occurs in the middle of a multi-day event's span.hideprivateevents
due to changes introduced in the ICS Parser library v. 3.2.1, which was updated in ICS Calendar v. 10.8.4. ICS Parser moved the class
property of the event object into a private additionalProperties
array, with a magic "getter" function to retrieve the data. ICS Calendar's hideprivateevents
logic has now been updated accordingly.r34ics_scrape_url_from_string()
in extracting event URLs from descriptions, so this is only done when the description contains a single URL.r34ics_scrape_url_from_string()
function to use preg_match_all()
and remove duplicate URLs from matches.'url'
node, all existing functionality such as linktitles
will automatically use these extracted URLs when possible. (Also added r34ics_scrape_url_from_string()
function to support this capability.)debug.css
.nomobile="true"
is set in the shortcode. Only the calendar table scrolls horizontally, and it should not affect any other elements on the page. While horizontal scrolling is not ideal, it provides a way for the table cells to be a reasonable width (100 pixels each) for improved table readability on phones and other small-screen mobile devices.Warning: Undefined array key 4
PHP messages.wp-config.php
file and make sure the WP_DEBUG
constant is set to false
, and if the error messages still appear, you or your server admin may need to change the display_errors
PHP setting in your .htaccess
or php.ini
file.
10.8.3 - 2023.03.01
R34ICS::event_description_html()
, R34ICS::event_label_html()
and R34ICS::event_sublabel_html()
methods.r34ics-ajax.js
into script.js
.reload
is set to a smaller value than the Transient (cache) expiration option.hideprivateevents
option, which will exclude any events containing CLASS:PRIVATE
or CLASS:CONFIDENTIAL
from display. Also added R34ICS::r34ics_display_calendar_exclude_event()
method for handling this and any future conditional exclusions, leveraging the existing r34ics_display_calendar_exclude_event
filter.Warning: Undefined variable $d in wp-content/plugins/ics-calendar/templates/calendar-list.php on line 237
caused by with changes in version 10.8.0.r34ics_has_desc()
function that would display hover box for recurring events when hiderecurrence
is set. (Was incorrectly checking for skiprecurrence
, which determines whether recurring events are displayed at all.)readme.txt
and ics-calendar.php
.data-events-count
and data-feed-keys
attributes to .ics-calendar-date-wrapper
elements in list view.color
and compact
set.:last-child
element (which may be generated by the site theme) in .descloc
and .eventdesc
elements.readme.txt
contents that appear on WordPress Plugin Directory to reflect availability of Shortcode Builder, and other minor tweaks.r34ics_url_uniqid_update()
function to encapsulate updating the r34ics_feed_urls
setting, and updated `r34ics_url_uniqid() to use it to create a new ID if one doesn't already exist, to ensure that new URLs can be retrieved via AJAX without first being loaded by the regular method.R34ICS::display_calendar_ics_data_init()
method.r3417_
to r34ics_
. Note: If your site contains any custom code using ICS Calendar's hooks (actions/filters), be sure to replace any instances of r3417_
with r34ics_
in your code. (Retained deprecated old filter names for now.)functions.php
file.pastdays
, when limitdays
is set and calendar is starting on "today". (Adds pastdays
and limitdays
together, to ensure limitdays
is setting the number of days in the future rather than only showing past events.)debug.css
for users with manage_options
capability only (since the code for displaying the debug panel requires that capability anyway).r34ics_calendar_view
action in R34ICS::shortcode_defaults_merge()
method.Author URI
in plugin file to ICS Calendar to make it easier for users to find the correct site when seeking direct support or commercial upgrades. ICS Calendar is still owned and developed by Room 34 Creative Services, LLC.article
tags, or missing closing div
tags (if using pagination
).article
tag to resolve some interaction issues.a
tags for better UX.pagination
parameter for list view. Allows for long event lists to be broken up into smaller, paginated groups. Has no effect on any other views.title
and description
on calendars with multiple feeds.title
and description
.r34ics_debug
filter.guid
to be blank, which causes JavaScript errors in some views.R34ICS::_url_get_contents()
.nomobile="true"
set.R34ICS::event_description_html()
to allow $has_desc
parameter to force output. (Useful in Pro/custom views that may not allow full event titles to fit in table/grid layout.)columnlabels
to default to short
if nomobile="true"
is set and columnlabels
is not specified.wp_footer
, loaded dynamically by the shortcode function, so ICS Calendar's assets only load on pages that actually contain a calendar..r34ics-hidden-on-load
CSS class and restored inline style="display: none;"
with addition of R34ICS::safe_style_css()
method to resolve conflict with wp_kses()
functions.Plugin Data
dump from debug mode 1.<style>
tags in the <body>
: ICS Calendar has long included <style>
tags in the <body>
, specifically for feed color coding. While this has technically violated earlier HTML specifications, and still causes validation errors, there is no practical way around it, as these styles are only defined when the shortcode runs, which is after the wp_head
hook has already run. Meanwhile, there is another conflicting consideration, which is the unnecessary loading of ICS Calendar's CSS and JS files on every page of the site, regardless of whether or not a given page contains a calendar.
This version of ICS Calendar (technically) exacerbates the first issue while resolving the second: we have now moved all enqueuing of ICS Calendar's CSS and JS to the wp_footer
action, rather than the wp_enqueue_scripts
action. This allows them to be inserted by the shortcode function to ensure that they only get loaded on pages that actually contain a calendar.
While this technically exacerbates the problem of <style>
(and <link>
) tags in the <body>
, the latest HTML spec (5.3) does allow <style>
and <link>
tags for CSS in the <body>
, addressing the practical reality of CMS-type systems that need to be able to insert this code after the <head>
has been generated, and consistent with the fact that all major browsers have always allowed this without issue. These pages may not validate, but that is because the validator is using an outdated version of the spec. A "vanilla" installation of Gutenberg-era WordPress itself already inserts <style>
tags near the closing </body>
tag, so ICS Calendar's inclusion of these tags does not directly impact whether or not a page validates.
10.5.2 - 2023.01.04
whitetext
.whitetext
or solidcolors
options..ics-calendar
scope.darkgray
to gainsboro
.style.css
to using the aforementioned CSS variables.r34ics_first_day_of_current()
and r34ics_last_day_of_current()
functions.R34ICS::pand_path
property.r34ics_purge_calendar_transients()
conditions to catch some transients that were being missed.R34ICS::display_calendar()
method into smaller, modular components. This process will continue over subsequent updates.r34ics_display_calendar_ics_data_init
filter.display: block
instead of display: table-row
on mobile..loading
state does not seem to be active long enough for the icon to appear.R34ICS::shortcode()
method to allow support for this feature in the Pro version.R34ICS::shortcode()
(and changed E_USER_NOTICE
to E_USER_DEPRECATED
).r34ics_url_uniqid_array_convert()
function to facilitate converting feed URLs into reference strings, as the contents of the shortcode must be included in the HTML placeholder for the AJAX-loaded calendar.r34ics_init()
function so it can also be fired when calendar is inserted dynamically by AJAX.script.js
formatting.r34ics_system_report_array
filter to r34ics_system_report()
function.$no_toggles
input parameter to R34ICS::color_key_html()
method.r34ics_feed_colors_css()
function. Revised CSS output to remove references to specific views and instead apply styles generally to tables and definition lists inside the ICS Calendar output. Added r34ics_feed_colors_css
filter for external modification of the output.r34ics_minify_css()
function.$ics_data['view']
to data array to make it easier to know the current view in certain functions without needing to modify the functions' accepted input parameters.r34ics_color_text4bg()
to more effectively calculate background color's luminosity.eventdesc
values greater than 1 to not apply to week view.G\hi
(e.g. "14h45") as a supported time format.R34ICS::_date_events_sort()
method.R34ICS::_fix_recurrence_exceptions()
method to R34ICS::_date_events_fix_recurrence_exceptions()
to clarify the scope of the array it manipulates. (Retained old name as a deprecated alias.)!important
to table padding and event titles, to fix a common conflict with many themes.vendors/ics-parser/phpstan.neon.dist
file that was omitted in version 10.0.0 update. (This file does not appear to be relevant to any ICS Calendar functionality, but is included for completeness.)null
to non-nullable parameters of built-in functions.null
to either ''
(empty string) or 0
(for integers).r34ics_url_get_contents()
function was replaced with protected method R34ICS::_url_get_contents()
.)printf
variables to ensure consistent use of the ICS Calendar brand name throughout, regardless of the site language. Updated some status notification messages. Added missing translations for Classic Editor Add ICS Calendar popup.skipdomainerrors
shortcode parameter. This option is intended for specialized use cases where a page may be loading numerous ICS feeds from the same server. When skipdomainerrors="true"
is present in your shortcode, if the server does not respond to the first request with a valid feed, ICS Calendar will not try to retrieve any additional feeds from the same server on the same page. This should resolve potential issues where a page may take several minutes to load as it is attempting in vain to retrieve multiple feeds from the same unresponsive server.R34ICS::_url_get_contents()
method to add extra context options when using fopen
functions. Added values for max_redirects
, timeout
and user_agent
options.sametab
shortcode parameter to override ICS Calendar's default functionality of making all links within the calendar open in a new browser tab. Add sametab="true"
to your shortcode to have links within the calendar open in the same browser tab as the current page..ics
files when using eventdl
, to simplify the user experience on Android.hidealldayindicator
.)r34ics_show_hide_headers()
JavaScript function when the user clicks anything on the page, if the page loads with a hidden calendar. Resolves an issue where list view may be missing its day/month headers after user interaction reveals the hidden calendar.assets/style.css
. (The typo was in an empty placeholder selector, so it had no impact on display.).hndle
CSS class on h3
headers on admin pages.r34ics_maybe_enfold()
function, and added conditional line "enfolding" to single-event .ics file downloads (when using the eventdl
option). Should resolve issues where some event description text may not be imported into certain calendar software, e.g. Microsoft Office 365/Outlook. Also resolves issue of the generated .ics feeds not validating.NAME
and VERSION
constants to R34ICS
class.timeformat
shortcode parameter to allow overriding the time format in general settings.ics-calendar.php
to better organize initialization logic and install/update functions, added support for deferred admin notices.persist-admin-notices-dismissal
vendor folder and related functions/methods because they were not being used.monthnav
parameter to month view only.data
attributes in month and week views:
r34ics_day_events_count()
function, and data-events-count
attribute on td
tags in calendar table.r34ics_day_events_feed_keys()
function, and data-feed-keys
attribute on td
tags in calendar table.data-feed-key
attributes in the legend and on individual events. However, the data-feed-keys
attribute on td
tags may include multiple feed keys, if there are multiple events on a date. The keys are pipe-delimited.
Additional changes in this version:
class-r34ics.php
to indicate deprecated or special-purpose shortcode attributes.r34ics_maybe_skip_to_next_month()
function not to skip to next month if nomobile
is set.cursor: help;
in the plugin's CSS, due to frequent confusion over the intent of this cursor icon.r34ics_show_hide_headers()
JavaScript function not firing on calendars inside an HTML5 details
tag.wp_date()
function and the custom r34ics_date()
function are shifting dates back by 1 when the date is provided in YYYYMMDD format. This update converts the dates into MM/DD/YYYY format, and switches back to using r34ics_date()
.readme.txt
.limitdays
.pastdays
to logic for calculating the default startdate
numeric value when using startdate="today"
or when using limitdays
in week view. (Fixes an issue where pastdays
had no effect in week view.)r34ics_date()
to wp_date()
, to address an issue where multi-day events with specific start and end times may display the incorrect dates. Appears to be an issue with how r34ics_date()
handles timezones under certain server configurations. Template will be switched back to using r34ics_date()
when the issue is resolved.webcal
protocol to https
from R34ICS::display_calendar()
to R34ICS::_url_get_contents()
.rtrim()
to remove trailing slashes on path definitions in R34ICS::__construct()
.R34ICS::_url_get_contents()
.reload
is set to a value greater than 1
.</article>
to fix introduced in 9.6.2.1.</dl>
and </div>
tags on last shown date in list views when count
is in effect (which is almost always) by adding these tags before PHP break(5)
control structure.eventdl
(individual event ICS downloads) links from doing anything.eventdl
from functioning properly in the lightbox, when toggle="lightbox"
is set.R34ICS::display_calendar()
method via the new r34ics_display_calendar_early_render
filter, to allow new features that will use a refactored event parsing method to bypass the existing process. Needed for future updates.update_option_timezone_string
action in ics-calendar.php
.r34ics_show_hide_headers()
JavaScript function to check for :visible
instead of :not([style*="none"]
, allowing for more flexible scenarios where an element might be hidden (e.g. in the stylesheet or via dynamically-added CSS classes, rather than just inline styles).r34ics_guid()
function and replaced it with the new r34ics_uid()
function. Old GUID output did not strictly conform to the GUID/UUID definition, and we do not need it for cryptographic purposes. This new function is intended simply to create a reasonably reliably unique ID for elements within a page. The new output is substantially smaller (and somewhat faster to generate), resulting in a smaller overall HTML payload, especially on large calendars, and potentially faster loading times. (Note: The associated shortcode parameter for supplying custom ID strings is still called guid
although it will be changed to uid
in a future update. (At that time, guid
will be retained for backward compatibility with existing shortcodes.)r34ics_url_uniqid()
and r34ics_purge_calendar_transients()
functions and R34ICS::_url_get_contents()
method to fix an issue that may cause unique feed URL IDs not to be generated, which would make the event download links (eventdl
) fail.style="display: none;"
attributes in some templates with r34ics-hidden-on-load
CSS class, to resolve conflicts with other plugins that may run ICS Calendar's output through wp_kses_post()
.reverse="true"
option to display list view in reverse order (displaying past dates in reverse chronological order, rather than future dates). Should be used in conjunction with pastdays
(or limitdays
) to set the number of days to include. Notes: 1) When reverse
is used, pastdays
and limitdays
are automatically set to the same value. If both are set, pastdays
takes precedence. 2) Due to date scope logic in the parser, if both pastdays
and limitdays
are omitted, only events in the current calendar year will be displayed. 3) The reverse
option applies only to list view. It has no effect on other views, due to a logical incompatibility with other layouts. 4) Multiple events within a single day are still displayed in "forward" time order.stickymonths="true"
option to create "sticky" months. If this is included in your shortcode, when a month is selected from the dropdown, a query string variable, e.g. ?r34icsym=202203
(with values in YYYYMM
format), is appended to the URL in the address bar. This allows you to easily share a link to the page with the specified month automatically selected. Old links will not break over time; if the month in the query string is no longer present in the calendar, it will default to the current month. Notes: 1) If the current month is selected, it will not be appended to the URL in the address bar. 2) If multiple month view calendars appear on the same page, this query string value will affect all of them.r34ics_qs_update()
(to update query string values in the address bar) and r34ics_qs_val()
(for retrieving the value of a given query string key) JavaScript functions, to support the new r34icsym
functionality..event
elements now include a data-categories
attribute if the event is assigned to one or more categories in the source feed. Note: Most widely used source calendars (e.g. Google Calendar, Office 365) do not include category data in the ICS feed, even if that data exists in the source calendar itself.CATEGORIES
field to ICS download links (used by eventdl="true"
).data-feed-color
attribute on .event
elements if there is actually a color value.r34ics_day_classes
and r34ics_event_css_classes
filters, to facilitate custom logic for applying additional CSS classes to day td
elements (technically, the parent element of the .day
class) in table-based views, and to individual .event
elements (li.event
in table-based views, and dd.event
in list view). Documentation and code examples are available on our Developer page.r34ics_day_classes()
and r34ics_event_css_classes()
functions, in conjunction with adding the above filters.R34ICS::_url_get_contents()
for storing IDs retrieved by r34ics_url_uniqid()
to avoid false negatives.eventdl="true"
).webcal://
to https://
in r34ics_url_uniqid()
. Resolves issue that would prevent eventdl="true"
links from working properly on calendars where the feed URL begins with webcal://
.script.js
for easier reading.r34ics_lightbox_container()
to resolve issues where lightbox HTML still may not be included in page after changes in 9.3.5.1.z-index
of lightbox to deal with sites that may have a header with an extremely high z-index
value. (Any arbitrarily large number may never be enough; this is the nature of z-index
.)function_exists()
check for shell_exec()
before executing it in the System Report on the admin page. Most servers have the function enabled, but if they don't, the plugin's admin page returns a fatal error.toggle="lightbox"
logic to resolve some edge cases where the jQuery-injected lightbox container was not working properly.whitetext
option is being used. Hover block background will now be black to match the rest of the calendar table.r34ics_scrub_duplicate_uids()
to accept second $args
parameter. Modified fixredundantuids
attribute to accommodate integer values to allow for different levels of processing. Setting fixredundantuids="2"
will now remove any duplicates that start at the same time and have the same SUMMARY value, regardless of matching UIDs. (This is intended for handling edge cases where an individual instance of a recurring event has been edited.) The original functionality of fixredundantuids="true"
has also now been modified to only catch UIDs that have the same start time, not just the same date.R34ICS::parse_attach_array()
to more accurately identify attachment URLs on Google Drive.r34ics_url_get_contents()
function to fix issue with ICS Calendar Pro license verification for versions earlier than 3.12.0.legacyparser="true"
option to load the old (pre-ICS Calendar v.9.0.0) version of ics-parser library. Useful mainly for an edge case where the new version of ics-parser is stripping CSS classes out of HTML-formatted event descriptions. This option will be removed when an updated version of ics-parser that resolves this issue is available.R34ICS::_event_ics_download()
method.$args
parameter of R34ICS::r34ics_calendar_classes()
method to resolve error message with PHP 8.ATTENDEE
and RDATE
in .ics files generated by eventdl
.r34ics_has_desc()
to make event details hover block appear when eventdl
is on but eventdesc
is not.basicauth
attribute, to allow accessing calendars that are configured to require HTTP basic authentication. Note: This is currently considered a "beta" feature. In order to use this feature, you will need to define a R34ICS_FEED_BASICAUTH
constant in your site's wp-config.php
file. More details are available on our Beta Features page.R34ICS::_url_get_contents()
to always include a user agent string. Previously a user agent string was only applied if the undocumented curlopts="useragent"
attribute was present in the shortcode. (This is helpful with sources that reject requests with an empty user agent string, e.g. Facebook.)eventdl
functionality, rebuilt to resolve security issues and inefficiencies with the original method. Note: This is still considered a "beta" feature. Your feedback is welcomed.r34ics_url_get_contents()
function with protected method R34ICS::_url_get_contents()
, to limit access to its functionality. The r34ics_url_get_contents()
function now returns false and triggers a PHP warning if used.r34ics_feed_urls
site option and associated getter functions, to store a list of feed URLs with unique IDs and allow them to be referenced on the front end (e.g. in conjunction with eventdl
) without exposing the feed URLs directly in the HTML code.R34ICS::_load_parser()
and R34ICS::_load_pand()
from private to protected methods.replaceWindowsTimeZoneIds
from calls to ICal
methods, since it is no longer part of the ics-parser library.readme.txt
content.eventdl
feature, as its current configuration presents a security risk. It will be added back after the issue has been resolved.r34ics_url_get_contents()
function.r34ics_purge_calendar_transients()
to support changes to r34ics_url_get_contents()
function, along with any future transients added to ICS Calendar or ICS Calendar Pro.reload="true"
applies in the same way as before. The Clear Cached Calendar Data utility also applies to both.
9.1.0.3 - 2022.01.25
r34ics_shortcode_url_fix()
function to better handle edge cases around the url
attribute containing HTML tags. Rewrote error message this function throws, to be more specific, and raised the error level from notice to warning. (Note: The url
attribute should never contain HTML tags!)solidcolors
option. Include solidcolors="true"
in your shortcode to make events in color-coded feeds use the designated color as a solid background behind the text, instead of the default lighter "tint" of the designated color.whitetext
option. Include whitetext="true"
in your shortcode to force all text within the calendar to be white. Useful on pages with dark backgrounds.dimgray
to color palette. Used mainly in conjunction with the whitetext
setting.eventdl
feature from working in list view after the current month.r34ics_calendar_classes
filter logic. Added option to return an imploded string instead of an array, along with a third input parameter ($implode
) to allow for backwards compatibility with older Pro/external templates that expect an array.eventdl="true"
to your shortcode to add a clickable download link to each event. This will download a customized .ics
file containing only the selected event for users to add the event to their personal calendars. This is currently a BETA feature. Please provide any feedback you may have via the WordPress support forums. (Note: The current version does not split DESCRIPTION lines at the recommended 75-character limit; however this should not present an issue with most calendar software.)r34ics_get_ics_data()
function to allow developers to retrieve the $ics_data
array directly, outside of a shortcode. Takes a single array of key-value pairs as input. The keys match the attributes in the shortcode. (At this time the function has been retrofitted into the existing R34ICS::display_calendar()
method, with an extra argument to bypass template output and return the array directly. A future update will refactor the parsing and display logic into two separate methods.)arrayonly
attribute. Intended only for use by the r34ics_get_ics_data()
function (which automatically sets it to true
). Should not be used with the shortcode.full
value for columnlabels
attribute.wp_kses_post()
added in 8.11.0 that were being used unnecessarily on output from R34ICS
class methods.weeknumbers
option to display week number at beginning of each row of month and week views. (Has no effect on list view; also does not appear on month or week views when collapsed to a list on mobile displays.)wp_kses_post()
or esc_attr()
as appropriate) to all variable output.r34ics_month_in_range()
function and refactored week view to avoid outputting a large amount of extraneous table HTML. This will be further optimized in the future, as it is still outputting some unnecessary hidden table rows. (Also refactored month and list views to use this function, although they were already removing extra months with conditional logic.)printf()
functions and updated translation strings that had multiple placeholders.curlopts
attribute. Sites whose feeds are already loading successfully should NOT use this feature. This attribute takes a pipe-delimited string of options to turn on for the cURL connection that retrieves an ICS feed. Currently supports cookie
and useragent
(e.g. curlopts="cookie"
or curlopts="useragent"
or curlopts="cookie|useragent"
. It has come to our attention that some services like Cloudflare (providing load balancing, CDNs, and DDOS mitigation services) may reject requests generated by ICS Calendar due to their superficial similarity to malicious requests. If you are using a service like this and are finding that ICS Calendar is unable to retrieve your feeds, please try adding curlopts="cookie|useragent"
to your shortcode and let us know if it is helpful.r3417_event_description_html_filter
, r3417_event_label_html_filter
and r3417_event_sublabel_html_filter
filters, to allow filtering functions to access all event data and other input parameters available to the calling functions.r34ics_scrub_duplicate_uids()
function, which will iterate through the final $ics_data
array and remove any events that have a redundant UID with other events on the same date.fixredundantuids
shortcode attribute (which uses the new r34ics_scrub_duplicate_uids()
function with the r34ics_display_calendar_filter_ics_data
filter) to address an issue where an iCloud source feed may include multiple past edits of an event as separate, redundant instances of the event in the calendar. If you are experiencing this issue, add fixredundantuids="true"
to your shortcode. Note that this will not remove redundant-looking events if they have different UIDs. (For instance, if you've deleted a single instance of a recurring event, and then created a new one-off event at the same date and time, or with the same title... those events will have different UIDs and be treated as separate events.) Also note that we are still testing this feature and it is subject to change or removal. Your feedback is welcomed..no_events
or .no_additional_events
element, and the next month does not contain a .no_events
element, the mobile/list formatting will skip to next month, rather than displaying the "no additional events" message. This switch is triggered both on the initial page load and on window resize (for situations where the user resizes a browser window from the desktop to mobile breakpoint).pastdays
and limitdays
values.r34ics_first_day_of()
and r34ics_last_day_of()
functions to replace r34ics_first_day_of_current()
and r34ics_last_day_of_current()
; adds $dt_str
as a second input parameter, allowing the function to be used with arbitrary dates instead of just the current date. r34ics_first_day_of_current()
and r34ics_last_day_of_current()
remain as aliases.location="maplinks"
to make event locations automatically convert into a clickable Google Maps link, unless the feed's LOCATION field data already contains HTML or a URL. location="true"
is still supported for displaying locations without adding a Google Maps link. IMPORTANT: This feature performs a Google Maps search on the exact text of your events' LOCATION fields. It does not have a way to verify that the value is a real address, so incomplete locations (e.g. conference room names within your office) may yield nonsensical map results.url
attribute of the ICS Calendar shortcode containing HTML tags, which was preventing proper parsing of the feed URL.r34ics_url_get_contents()
function to handle invalid feed URLs.toggle="lightbox"
to make event descriptions load in a lightbox instead of toggling in place. toggle="true"
is still supported for toggle-in-place. This is currently an experimental feature, and we are looking for feedback, especially regarding the visual display of the lightbox.currentweek
option. Currently this option will still function, although it is now triggering a PHP notice. It will be removed entirely in a future update. Please switch your shortcodes to using view="week"
instead.dtstart_date
to parsed event array.compact
option. Set compact="true"
to activate a more compact display of whichever view you are currently using. The exact layout changes will vary by view; not all views are affected. It is recommended that you also use toggle="true"
on list view for maximum effect. This is currently an experimental feature, and we are looking for feedback. In this version, the changes are that all text is reduced slightly in size, and the list view is collapsed into a new layout with the times left-aligned next to the event titles.nomonthheaders
option. Use nomonthheaders="true"
on list or month view to prevent month headers from displaying on the page. (Has no effect on week view since there are no month headers in that view anyway.)toggle
is set, then the standard link "pointer" (hand) cursor is used.<dt>
and <dl>
tags to allow tighter formatting due to browsers continuing to do something that should have been resolved years ago. This was necessary for the new compact
list view to display properly.hidetimes="true"
is set. This is mostly relevant for the new compact view.max-height
and internal scrolling to keep hover blocks a manageable size and (mostly) contained within the area of the table when the event description is very long. Prevents potential issues with the hover block running off the end of the page or outside of a container with overflow: hidden
.r34ics_show_hide_headers()
function to resolve issue with month headers disappearing in list view on window resize.reload
parameter to support integers greater than 1. Now reload="true"
or reload="1"
will function as before, telling the plugin to reload the source feed on every page load. Setting reload
to any integer greater than 1 will override the default 1-hour (3600-second) expiration of the cached calendar data (transient). The value is in seconds, e.g. reload="14400"
for 4 hours (14,400 seconds).r34ics_boolean_check()
function.R34ICS::parse_attach_array()
method to properly handle events with multiple attachments.tablebg
option to allow setting a custom color. Note: If you wish to retain the old transparent background on table cells, add tablebg="transparent"
to your shortcode.r34ics_color_hex_sanitize()
function to sanitize color input (specifically for tablebg
but may also be used for other settings in the future).position: relative;
on .ics-calendar-month-grid th:hover, .ics-calendar-month-grid td:hover
selector in CSS (was removed from the non :hover
selector in version 8.1.1) because lacking it causes event description hover boxes to be obscured behind adjacent table cells. Including it only on the hover state seems to avoid the issue in Firefox that 8.1.1 was attempting to resolve.opacity: 0.75;
on past events to prevent legibility issues on pages with dark or patterned backgrounds.r34ics_is_phone()
JavaScript function.r34ics_show_hide_headers()
JavaScript function.jQuery(window).on('resize')
for handling switches between breakpoints..ics-calendar-past-events-toggle
) for Show Past Events toggle for cleaner appearance.position: relative;
on .ics-calendar-month-grid th, .ics-calendar-month-grid td
selector in CSS (which appears to have been unnecessary anyway), to resolve issue of missing cell borders in Firefox.r34ics_calendar_classes
filter to all views..time-inline
class in list view when hidetimes
is used.id
parameter to guid
to avoid conflict with existing id
parameter in ICS Calendar Pro.id
parameter to allow assignment of an arbitrary id
attribute to a given calendar instead of the plugin's auto-generated GUID.$ym
variable definition in calendar-week.php
template.id
parameter:
(1) The WordPress sanitize_title()
function is automatically applied to the string.
(2) As is standard for all HTML, the id
value must be unique on the page!<img>
tags containing a src
value that is a link to a Google Drive file. Images attached to events on Google Calendar are treated as Google Drive file links rather than direct images and are not accessible without logging into a Google account that is authorized to view the image. We are looking for a workaround, but in the meantime this will prevent these types of broken images from appearing in rendered calendars.r34ics_maybe_make_clickable()
to support link formatting common in Microsoft Teams (Office 365) meetings, and improved use of r34ics_is_html()
in determining whether or not to add HTML line breaks.R34ICS::display_calendar()
method: moved date range calculation and array sorting out of foreach()
loop to improve performance on calendars with multiple feeds, and to avoid PHP warnings that may have occurred in edge cases where no feed was loaded. Please note: These changes have eliminated timezone overrides for date range calculations, which could result in some calendars starting or ending one day off from the intended dates, especially if your feed timezone is different from your site's default timezone. Please report any issues in the WordPress support forums.aria-labelledby
attributes to calendar containers to improve screen reader user experience.<ul>
elements on dates with no events.r34ics_day_classes()
function for assembling CSS classes for table cells.showendtimes
parameter on event description hover boxes. Previously, end times would only display if showendtimes="true"
was set in the shortcode. Now they will always display in the event description hover box. (The intended functionality of this feature is for what is displayed in the default calendar grid only.)rel="noopener noreferrer nofollow"
to dynamically inserted offsite links (which already contained target="_blank"
) in event descriptions.r34ics_domain_match()
in creating offsite links.r34ics_is_empty_array()
function to restore proper display of "No events found" message on list view, which stopped working when we added empty nodes to the events array to accommodate blank grids (when necessary) in month and week views. Removed conditional logic for "No events found" message in week and month views, since the current functionality should never allow it to display.r34ics_purge_calendar_transients()
function to automatically purge cached calendar data (transients) if the WordPress timezone setting is changed. Only clears cached data from this plugin; does not affect any WP core or other plugins' transients. (Can also be used in the future if other WP options are identified that warrant purging the cache after changes.)r34ics_purge_calendar_transients()
.$ics_events
variable is undefined. Now displays 'NO DATA' for feeds that do not have this variable set.legendinline
option. (For now, if it is present and legendstyle
is not also set, it will set legendstyle
to inline
.) Fixed associated logic.legendstyle
is set to none
. The original conditional logic was built around the legend being a color key only. With the addition of checkboxes to toggle the display of each individual calendar, the legend should be present regardless of the color
setting..available
and .has_events
CSS classes to table cells in month and week views.r34ics_display_calendar_filter_ics_data
to pass $args
as a second input parameter.maskinfo
check.r34ics_space_pipe_explode()
function to return a string when applicable, instead of 1-item array, to mimic previous functionality. This change was breaking hiderecurrence="true"
, and possibly other issues.r34ics_space_pipe_explode()
function to accept any combination of spaces and pipes as delimiters. (Allows for situations where, for example, the url
parameter is delimited by space-pipe-space.debug="3"
) and moved full dump of raw ICS feed into level 3. Level 1 is the basic debugger; level 2 adds Peak memory usage
, ICS Parser data
and cURL info
; level 3 adds full dump of URL contents retrieved
(levels 1 and 2 show total bytes retrieved only).title="DISPLAY_TITLE" description="DISPLAY_DESCRIPTION"
from the basic shortcode example on the admin page, as this seems to have been a source of some confusion.reload
to be true if debug
is set to 2, so the extended debugger always reloads from the source server.hiderecurrence
parameter to suppress all recurrence indicators in event descriptions. Note this is different from skiprecurrence
in that skiprecurrence
skips calculating recurrences. The new hiderecurrence
option will still show the recurring events, but not indicate that they are recurring; skiprecurrence
will not show the recurring events at all. The default behavior, omitting both of these options, is to calculate and display all recurring events, including the indicator showing their recurrence frequency. The hiderecurrence
parameter accepts one or more pipe-delimited frequency values, e.g. hiderecurrence="yearly|monthly"
or hiderecurrence="true"
to hide all recurrence indicators.nomobile="true"
parameter to force week view to remain in grid layout for mobile breakpoints.startdate
is empty and limitdays
is less than or equal to 7. (This eliminates the previous/current/next week dropdown, and "Show past events" on mobile view.R34ICS::event_description_html()
method to check for presence of any substantive output before generating the .descloc
DOM element.compatibility.php
file should provide the necessary support for versions before 5.3, and having the version requirement officially set at 5.3 may have prevented some installations from allowing updates.wp_date()
into r34ics_date()
.)r34ics_date()
function to consolidate datetime manipulations; replaced all uses of gmmktime()
, date()
, and most uses of wp_date()
functions.eventdesc="true"
).div
tags in list view.r34ics_transient_expiration
to r34ics_transient_expiration
so it's not a transient itself..ics-calendar-date
class to previously undifferentiated h4
tags, along with improved styling of dl.event
, dt.date
and dd.event
. IMPORTANT: If you have modified the CSS for list view in your theme, you may need to review the new CSS added to the plugin and adjust your modifications accordingly, as the necessary CSS selectors may have changed.abs()
(PHP absolute value function) on pastdays
handling, to allow negative values to be used for future days.vendor
folder, to support future use of dismissible admin notices within the plugin.extendmultiday="true"
shortcode parameter. Per iCalendar specifications, multi-day, all-day events should set DTEND
equal to the first date after the event ends. However in some usages, it may be desirable to include that date in the displayed range for an event. Including this parameter in your shortcode will cause the date specified by DTEND
to be included in the event range. Note: This has no effect on multi-day events that have start/end times specified.r34ics_display_calendar_preprocess_raw_feed
filter and moved it from immediately after ICS feed is loaded to immediately before it is handed off to the ICS Parser library. Extra parameters were added to allow for more useful manipulation of the feed data and placement was changed to after these parameters are all defined.r34ics_display_calendar_preprocess_raw_feed
filter to allow pre-processing of raw ICS feed data, after loading and immediately before sending to ICS Parser library for parsing. Can be used by ICS Calendar Pro, or custom code in theme or external plugins, to modify the contents of the feed prior to parsing, e.g. to strip out HTML tags in event DESCRIPTION fields or to exclude events from parsing. An understanding of proper iCalendar syntax will be helpful in using this filter. See the Developer tab in the plugin's User Guide (on the ICS Calendar admin page) for usage.</dl>
tags in list view HTML output.compatibility.php
file containing core WordPress datetime functions introduced in version 5.3. This has been tested to function properly with WordPress core version 4.9, and should allow the plugin to be used with at least WordPress 4.9 through 5.2, provided they are running a sufficiently new version of PHP (7.0 or later). The compatibility file is only loaded if the wp_date()
function does not exist in the current WordPress installation, and all functions defined in the file are wrapped in function_exists()
conditionals. This will have no impact on sites running WordPress 5.3 or later, and will not cause any issues for sites that upgrade from earlier WordPress versions in the future. Please note: While this has been added as a good faith effort to make ICS Calendar usable on earlier versions of WordPress, these features are provided as-is with no warranty or support. We strongly recommend keeping your WordPress core, and all plugins and themes, up-to-date whenever possible.r34ics_line_break_fix()
to account for lines that do not contain spaces but do contain an escaped line break.r34ics_line_break_fix()
function to handle DTSTART
or DTEND
with TZID
and also to resolve some edge case issues with URLs crossing the line break in folded DESCRIPTION
values. Should also prevent linebreakfix
from causing issues with properly formatted ICS feeds.skip
.r34ics_line_break_fix()
function introduced in v. 6.4.2.2. Rather than inserting an arbitrary replacement string, this new version attempts to more accurately simulate proper line folding, per the iCalendar spec.+
to general sibling selector ~
.)linebreakfix="true"
shortcode parameter to address rare cases where lines in the ICS feed are not properly folded. See 3.1 Content Lines in the iCalendar spec for details.r34ics_time_format()
to strip currently unsupported time format characters from the format string prior to processing the time format. This is a temporary workaround to allow the rest of the desired time format to display properly rather than reverting to the plugin's default H:i
format. For example: g:i a T
will now be interpreted as g:i a
and display times like "4:30 pm" rather than "16:30".method
shortcode attribute, which can be used to force the plugin to only try retrieving the ICS feed via either cURL or fopen. By default, the plugin tries cURL first and then falls back on fopen. In cases where cURL fails, but with a long timeout, you can use method="fopen"
in the shortcode to bypass cURL. This can significantly improve page load times for calendars that experience this issue with cURL receiving an HTTP 500 error from the calendar server.r34ics_url_get_contents_customize_curl_options
filter (accepts one parameter $conn
, being the handle for the cURL connection) to allow customization/overrides of plugin's default settings for the cURL connection used to retrieve the ICS feed with the r34ics_url_get_contents()
function.r34ics_url_get_contents()
for fallback to using fopen if cURL fails: failure might return some content, which the function previously interpreted as success. Now any time the HTTP response code is 400 or higher (indicating an error), the function will use fopen functions as a fallback. (This is specifically to address a rare condition where a server might return an HTTP 500 Internal Server Error on our cURL requests, but not with an fopen request.) Note: This is a partial fix for this issue; while it seems to resolve the problem of the calendar not loading at all, it still may require the request to timeout on the calendar server, causing the page to take 30 seconds or more to load. It is strongly recommended that you do not use the reload="true"
option except for testing purposes.R34ICS::days_of_week()
method to use WP_Locale
"get" methods, instead of retrieving properties directly.R34ICS::days_of_week()
method to always output full day names in Arabic. (We have been informed that WP core translations for WP_Locale::get_weekday_initial()
return values are incorrect in Arabic.)startdate="today"
to using wp_date()
function instead of PHP date()
function to avoid a potential timezone issue.r34ics_filter_the_content()
function to eliminate our possibly erroneous (and definitely conflicting) use of the_content
filter.$first_ts
variable in week view under certain conditions.r34ics_color_text4bg()
to dynamically set a text color that is optimal over a given background color.r34ics_hex2rgba()
with new output options (needed for new r34ics_color_text4bg()
function).r34ics_display_calendar_color_set
filter.tz
from working properly if only one timezone was set. (Would default to local WordPress timezone setting.)monthnav
.r34ics_url_get_contents()
function. Removed useless stream_get_contents()
condition; increased CURLOPT_MAXREDIRS
from 3 to 5; other minor adjustments.R34ICS::parse_attach_array()
method and added proper URL filtering with filter_var()
.R34ICS::carbon_path
property as ICS Parser library has become Carbon independent.monthnav
attribute with options of select
, arrows
or both
to choose how user navigates through months (month view only).limitdays
is not set.tz
parameter and timezone handling to avoid fatal errors if site does not have a timezone set and to default to WP timezone string instead of null if tz
is not specified.r34ics_get_feed_tz()
to prevent thrown exceptions on an invalid timezone string. Added r34ics_is_valid_tz()
function for support.r34ics_organizer_format()
function.r34ics_get_feed_tz()
to using timezone_open()
instead of new DateTimeZone
to easily handle exceptions.data-feed-color
attribute to events to make color-based CSS customizations easier.data-feed-color
to remove unnecessary padding on events without a color background.legendstyle
parameter with value options of "block" (default), "inline" or "none". Will eventually replace legendinline
parameter, which is functionally equivalent to legendstyle="inline"
.legendposition
parameter with value options of "above" (default) or "below". Determines whether legend is displayed above or below the calendar itself.tz
parameter (see below).tz
parameter to allow overriding the site's default time zone on an individual calendar. (See admin page for usage instructions.)vendor
folder entirely, as ICS Parser's dependencies are now only required for development on the library itself.)position
and z-index
properties to select dropdown and adjacent container to fix issue where select dropdown may be inaccessible due to default z-index stacking order.curl_setopt()
calls added in version 5.10.0.r3417_event_description_html_filter
, r3417_event_label_html_filter
and r3417_event_sublabel_html_filter
filters to allow modification of event information display on a per-event basis. Used by the new Regular Expressions feature in "Pro" version.r34ics_display_calendar_filter_ics_data
filter.T000000
in datetime strings instead of T000000Z
. (This change resolves an issue in at least one test case but may require further review. Please submit a support ticket if you are seeing new issues with all-day events.)r34ics_display_calendar_filter_ics_data
filter to allow external filtering of ICS data prior to display.r34ics_display_calendar_exclude_event
filter to allow custom theme/plugin code to determine whether or not each event should be excluded from display. Note: This filter runs on the loop that parses events. Avoid redundant or processor-heavy logic in uses of the filter. (For example, if a query is being run, execute it outside of the filter and pass its results into the filter as global variable.)customoptions
attribute to shortcode. This attribute will never be used directly within the core ICS Calendar plugin, but may be used in ICS Calendar Pro or in customizations/add-ons to pass additional data into the shortcode for use within filters. Developers are advised to use the pipe delimiter to separate multiple discrete options within this attribute value, as the plugin will explode this option into an array on the pipe character.current_time()
call in R34ICS::first_dow()
method to resolve a fatal error that may occur in rare cases..show()
and .hide()
methods to using .css('display','table-row')
to prevent layout issues with certain themes.r34ics_time_format()
function when site language is set to Greek.r34ics_url_get_contents()
function for sites that are experiencing errors related to verifying peers. See this Stack Overflow post for more details.url
attribute of the shortcode to be blanked out when used on a HivePress listing.feedlabel
parameter.legendinline
option to display color key legend as an inline list instead of stacked.r34ics_feed_colors_css()
function and removed redundant code from each template file.tzoffset
and tzignore
parameters..multi-feed
CSS class for future customizations of calendar display with multiple feeds.$args
parameter to R34ICS::color_key_html()
method to allow for conditional logic based on shortcode parameters.$ics_data
array to allow for easier manipulation.r34ics_color_key_html_after_feed_title
action to new R34ICS::color_key_html()
method.skiprecurrence
option to omit instances of recurring events. Use of this setting is discouraged in most cases, as it will prevent recurring events from displaying; however it may be useful in cases with extremely large calendars, if recurrences are not needed.R34ICS::color_key_html()
method. Moved color code keys above calendar for improved usability.attach
parameter to allow handling of attachments independent of eventdesc
. Possible values are true
, false
, image
and download
. If omitted or blank, attachments will be displayed if eventdesc
is true
, as before. If set to image
, only image attachments will be displayed. If set to download
only download-type attachments will be displayed..ics-calendar .event .descloc .attach_float
in your CSS.pastdays
calculations in list and month view.r34ics_boolean_check()
until issues with the new logic can be resolved.r34ics_boolean_check()
function to leverage core PHP filter_var()
function.http://
with https://
in feed URLs.r34ics_display_calendar_range_start
and r34ics_display_calendar_range_start
filters.plugin_dir_path()
function.r34ics_boolean_check()
function's handling of string input.skip
parameter for use in conjunction with count
in list view. (Presently undocumented, as functionality may change.)formatmonthyear
parameter to customize formatting of month/year headers, dropdown menus, etc.mktime()
function with gmmktime()
to prevent display date/month label miscalculations due to differences between server timezone and UTC.mktime()
(which uses local server time) was being used in combination with other functions (like the WordPress wp_date()
function) that were using UTC. By switching all instances of mktime()
to gmmktime()
, this issue should now be resolved.
5.2.4 - 2020.01.08
hidealldayindicator
parameter.r34ics_empty_content()
function for checking HTML strings for the presence of actual content. (Tests string by stripping spaces, non-breaking spaces, and all HTML except media tags.)r34ics_empty_content()
checks on some output methods to avoid rendering empty hover boxes.eventdesc
) from displaying when set to "true"
.eventdesc
excerpts to list view.overflow: hidden
set.toggle
parameter. (Now deprecated in favor of the new eventdesc
excerpt handling.eventdesc
not shortening to an excerpt when an integer value is provided.pastdays
option to allow previous months' events to appear.feedlabel
parameter. (Currently undocumented, as usage may change.)wp_date()
function to replace date_i18n()
. PHP requirement is because most actively supported OSes now ship with at least PHP 7.0.date_i18n()
with wp_date()
(if translations are needed for display) or PHP date()
function (if dates are being formatted for processing only). Currently also using date()
to format time-only display, due to issues on certain servers with redundant timezone offset adjustments when using wp_date()
.r34ics_date_format()
and r34ics_hour_format()
functions for improved i18n support.tzignore
and tzoffset
functionality due to unreliable results. These parameters are now ignored. All events are displayed at the time determined by the timezone for the overall feed or the individual event. An arbitrary timezone offset feature will be added back in a future version.tzoffset
setting into the next feed, if it didn't have its own, for shortcodes with multiple feed URLs.tzoffset
and tzignore
were set.columnlabels
attribute to allow use of abbreviated day names in column headers on month and week views.none
to false
.limitdays
is set and to improve performance.color
attribute..multiday_first
, .multiday_middle
and .multiday_last
CSS classes to customize appearance of events spanning multiple days.linktitles
attribute to make event titles into clickable links if the event contains a URL..no_phone
and .phone_only
classes to override conflicts in some themes. This is a temporary solution that will be improved upon in a future version.aria-hidden="true"
attributes to date values that were changed in version 4.4.1 to prevent redundant date descriptions in screen readers.tzoffset
works properly and can be used in conjuction with tzignore
to override the feed's time zone data. (Previously tzoffset
only worked if the feed did not contain any time zone data.)tzoffset
values (space-delimited) for calendars that include multiple feed URLs and need to use a different time zone setting for each feed.format
attribute in the mobile breakpoint only for month and week views. (Already supported in list view.)toggle
attribute to work around third-party plugin conflicts.maskinfo
option to hide event details (e.g. for vacation rental availability).eventdesc="true"
is set.)R34ICS::event_description_html()
method for cleaner template code.eventdesc="true"
is set, rather than as its own parameter).make_clickable()
function.)organizer
option to display organizer information if included in the feed.startdate
to all views.toggle
is off.limitdays
value to calculate starting from calendar's first event date rather than the current date and subtracted 1 from calculated value to account for the first date.bypassworkaround="true"
option to allow users to test bypassing some existing workarounds for time zone calculation errors in ICS Parser that may no longer be needed. If you are finding issues with time calculations, especially around switching into/out of Daylight Saving Time, please add this parameter to your shortcode and let us know in the WordPress support forum if it is helpful.limitdays
parameter. When set, it now applies a hard end date for the display range, rather than ending at the date of the last event in the feed.tzoffset
feature to the admin page.nomobile
option to shortcode to block the standard functionality of displaying month and week views as lists on mobile. This feature should only be used if you will be writing your own CSS to improve the cramped display of the grid on mobile. Basic instructions on how to do this are included on the admin page. Additional notes: 1) This feature involves a CSS change, so you may need to clear your cache before you will see the change on the front end of your site. 2) This is intended as a simple workaround option for the free version of the plugin. Additional views are planned for the upcoming pro version, including an enhanced mobile display option for month and week views.data-dow
values not resetting to 0 on Sunday on fill cells at end of month view grid if site's Start of week value is set to a day other than Sunday.startdate="today"
option.color
attribute: You can hide or modify the Key that appears below the calendar using these CSS classes: .ics-calendar-color-key
for the outer container; .ics-calendar-color-key-label
for the word "Key" (not yet included in the translation files), and .ics-calendar-color-key-item
for the color items themselves; use .ics-calendar-color-key-item[data-feed-key="n"]
to alter individual items. (Replace "n" with the number of the item in the list, starting with 0.)readme.txt
.ICal::eventsFromRange()
call from r
to Y/m/d
for better international compatibility.class-r34ics.php
and functions.php
out from main ics-calendar.php
file.color
attribute that may cause the color key to appear when no colors are set. (Note: The feature still currently supports an unequal number of calendars and colors, meaning some calendars might not have a color, or some colors may appear in the key even though they are not assigned to a calendar.) Also fixed issue that would prevent calendar names from appearing in the key if a color was not assigned to it.overflow: visible
in 3.2.0 to allow the hover blocks that replaced tooltips.color
attribute. This feature is not yet officially documented, but testing and feedback are welcome. Use color="#ffffff"
or, if you have multiple URLs, enter multiple values in the color
attribute, space-separated, and those colors will be applied in the same order as the URLs. You are setting the base color (the accent on the left edge). The highlight color behind the text is the same color with a 20% alpha transparency applied. (A full-featured color customizer tool is planned for inclusion in the upcoming Pro version.)startdate
and limitdays
attributes.make_clickable()
in descriptions only if they do not already contain HTML. This function also applies html_entity_decode()
to all parsed string output, as well as applying nl2br()
if make_clickable()
is being applied..eventdesc
or .location
classes, there is now a wrapper on those elements called .descloc
; your customizations may need to be applied to that class instead.limitdays
parameter to override default limit of 365 days.url
parameter. Known issue: Because the URLs are passed in together, any rules in other parameters will be applied to all calendars. This may present a problem if, for example, one calendar requires the tzignore
parameter and another does not. These types of calendars should be considered "incompatible" at this time, and not combined into one display.toggle
attribute to allow for event description/location display to be toggled on/off by clicking an event title.phone_only
class from location information in list view.view="currentweek"
.