bernskioldmedia/events-calendar-ical-feeds

扩展事件日历,添加用户可以在他们喜欢的日历应用中订阅的iCal订阅源。

资助包维护!
bernskioldmedia

安装: 5

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 4

分支: 1

类型:wordpress-plugin

1.2.6 2024-03-06 12:27 UTC

README

License Downloads

扩展事件日历,添加用户可以在他们喜欢的日历应用中订阅的iCal订阅源。默认情况下,在事件日历中,用户可以导出iCalendar订阅源,但不能订阅它。

我们认为日历导出的用途是订阅,以便更新能够正确反映。因此,此插件添加了一个可订阅的、自动更新的订阅源。

安装

您可以通过composer安装此包。

composer require bernskioldmedia/events-calendar-ical-feeds

您还可以通过从发布页面下载构建的ZIP文件并将其上传到您的插件文件夹来安装此包。

该插件将通过核心WordPress插件更新器进行更新。

用法

订阅源URL基于事件日历设置中的事件别名。

对于默认别名events,订阅源URL将是:https://yourdomain.com/events/ical-feed

请注意,默认订阅源是/ical,而此订阅源是/ical-feed

查询参数

您可以通过可用的查询参数自定义哪些事件显示在订阅源中。

设置起始日期。

从自定义的起始日期开始获取事件。默认情况下,这是从当前日期向前滚动30天。

from=2021-01-01

设置结束日期。

设置自定义的结束日期,直到获取事件。默认情况下,这是从当前日期向前滚动六个月。

to=2021-12-31

显示特定场馆的事件

您可以通过添加场馆参数并传递场馆ID来创建特定场馆的日历订阅源。

venue=3

显示特定组织者的事件

您可以通过添加组织者参数并传递组织者ID来创建特定组织者的日历订阅源。

organizer=3

显示一个或多个事件类别的事件

您可以通过添加类别参数并传递一个或多个事件类别ID(以逗号分隔)来创建特定事件类别的日历订阅源。

categories=28categories=25,28,93

控制包含的事件数量

您可以通过自定义日历中显示的事件数量。默认情况下,这是100。

由于性能原因以及防止任何人滥用并使服务器崩溃,存在一个上限。默认情况下,这是500,但可以在过滤器中进行自定义(见下文)。

amount=250

过滤器 & 操作

我们提供了一些过滤器和操作来定制和扩展。

控制订阅源中事件的最大数量

定义在订阅源中最多可以包含多少项。不允许超过此数量的项,即使通过过滤器设置也是如此。默认为500

// Allow 1000 events to be loaded into the iCal feed.
add_filter( 'events_calendar_ical_feeds_max_amount', function(int $max_events, \BernskioldMedia\WP\EventsCalendarIcalFeeds\Calendar_Feed $feed) {
	return 1000;
} );

自定义默认起始日期

定义我们应提前多久获取订阅源的事件。默认情况下,这是-30 days,这意味着过去30天的事件将显示在日历中。

请注意这一点,因为较长的时段将意味着更大的订阅源,这会影响性能。

返回与DateTime兼容的任何有价值的值。

// Including events starting 45 days from any given day.
add_filter( 'events_calendar_ical_feeds_default_start_date', function( string $start_date ) {
	return '-45 days';
});

自定义默认结束日期

定义我们应在当前日期之后多久获取订阅源的事件。默认情况下,这是+6 months,这意味着未来六个月的事件将显示在日历中。

请注意这一点,因为较长的时段将意味着更大的订阅源,这会影响性能。

返回与DateTime兼容的任何有价值的值。

// Including events rolling one year from today.
add_filter( 'events_calendar_ical_feeds_default_end_date', function( string $end_date ) {
	return '+1 year';
});

自定义默认订阅源别名

如果您不喜欢事件别名中的 /ical-feed 后缀,您可以通过此过滤器进行自定义。返回任意一个目录级别的字符串。

请注意,在这里返回 /ical 会导致与 The Events Calendar 内置的订阅发生冲突。

更改后,别忘了刷新您的永久链接。

// Making the URL /events/subscribe.
add_filter( 'events_calendar_ical_feeds_feed_slug', function() {
	return 'subscribe';
});

自定义日历订阅

如果您想添加、更改或删除此插件默认操作的内容,可以在输出前自定义日历订阅。请参阅 spatie/icalendar-generator 了解如何与日历对象交互。

// Customize the calendar feed.
add_action( 'events_calendar_ical_create_calendar', function( \Spatie\IcalendarGenerator\Components\Calendar $calendar ) {
	// $calendar->...
});

自定义事件对象

如果您想在事件对象添加到日历订阅前对其进行自定义,以添加、更改或删除此插件默认操作的内容,请参阅 spatie/icalendar-generator 了解如何与事件对象交互。

这可以用来自定义数据或根据事件 ID 添加额外的元数据。

// Customize the calendar feed.
add_action( 'events_calendar_ical_event_from_id', function( \Spatie\IcalendarGenerator\Components\Event $event, int $event_id ) {
	// $event->...
});

防止资产加载

如果您不希望此插件加载其自己的资产(见下文),可以通过从此过滤器返回 false 来防止它。默认返回 true。

// Prevent Events Calendar iCal Feeds from loading assets.
add_action( 'events_calendar_ical_load_assets', '__return_false' );

资产

此插件需要 Alpine.js 来完成一些前端操作。由于 Alpine.js 可能已经在您运行的或其他项目中使用,我们在检查时会尽量不对其产生影响。

我们通过检查处理程序 alpinejs 是否已注册来加载它。如果已注册,我们将不会对其产生影响。只需排队即可。如果没有,我们将注册并排队。

要完全禁用资产的加载,请参阅上文的“防止资产加载”。