bernskioldmedia / events-calendar-ical-feeds
扩展事件日历,添加用户可以在他们喜欢的日历应用中订阅的iCal订阅源。
资助包维护!
bernskioldmedia
Requires
- php: ^7.4|^8.0
- composer/installers: ~1.0
- spatie/icalendar-generator: ^2.3
Requires (Dev)
- bernskioldmedia/phpcs-wordpress: dev-master
- bernskioldmedia/wp-plugin-base: ^2.3.0
- humbug/php-scoper: dev-master
- yahnis-elsts/plugin-update-checker: ^4.11
This package is auto-updated.
Last update: 2024-09-29 11:16:43 UTC
README
扩展事件日历,添加用户可以在他们喜欢的日历应用中订阅的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=28
或 categories=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
是否已注册来加载它。如果已注册,我们将不会对其产生影响。只需排队即可。如果没有,我们将注册并排队。
要完全禁用资产的加载,请参阅上文的“防止资产加载”。