{"id":346530,"date":"2026-07-31T09:51:18","date_gmt":"2026-07-31T09:51:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lapdi-events\/"},"modified":"2026-08-24T03:23:45","modified_gmt":"2026-08-24T03:23:45","slug":"lapdi-events","status":"publish","type":"plugin","link":"https:\/\/fr.wordpress.org\/plugins\/lapdi-events\/","author":23540318,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.4","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"LAPDI Events","header_author":"Let A Pro Do IT!","header_description":"Manage recurring public and member events, venues, and organizers, with calendar shortcodes and a The Events Calendar importer.","assets_banners_color":"0c1e36","last_updated":"2026-08-24 03:23:45","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/letaprodoit","header_plugin_uri":"","header_author_uri":"https:\/\/letaprodoit.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":119,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"sharrondenice","date":"2026-07-31 15:43:19"},"1.1.0":{"tag":"1.1.0","author":"sharrondenice","date":"2026-08-24 03:23:45"}},"upgrade_notice":{"1.1.0":"<p>Add meeting capacity, advanced recurrence patterns and linked planning for the next four meetings in each series. Existing events remain unlimited and retain their previous schedules until configured.<\/p>","1.0.0":"<p>Initial public release. TSP Easy Dev must be installed and active before LAPDI Events can be activated.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3630264,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3630264,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3630264,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3630264,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[416,1486,274024,5881,1149],"plugin_category":[40],"plugin_contributors":[273861,82727],"plugin_business_model":[],"class_list":["post-346530","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-events","plugin_tags-organizers","plugin_tags-recurring-events","plugin_tags-venues","plugin_category-calendar-and-events","plugin_contributors-letaprodoit","plugin_contributors-sharrondenice","plugin_committers-letaprodoit","plugin_committers-sharrondenice"],"banners":{"banner":"https:\/\/ps.w.org\/lapdi-events\/assets\/banner-772x250.jpg?rev=3630264","banner_2x":"https:\/\/ps.w.org\/lapdi-events\/assets\/banner-1544x500.jpg?rev=3630264","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lapdi-events\/assets\/icon-128x128.jpg?rev=3630264","icon_2x":"https:\/\/ps.w.org\/lapdi-events\/assets\/icon-256x256.jpg?rev=3630264","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>LAPDI Events is a public and member-aware calendar plugin. It provides its own <code>lapdi_event<\/code>, <code>lapdi_venue<\/code> and <code>lapdi_organizer<\/code> administration types, reusable event categories\/venues\/organizers, one-time\/daily\/weekly\/monthly recurrence, and List\/Month\/Day calendar views \u2014 with each event set to either <strong>Public<\/strong> or <strong>Members only<\/strong> visibility.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Reusable event categories, venues and organizers<\/li>\n<li>One-time, daily, weekly and monthly recurrence with configurable intervals, weekly weekdays, monthly ordinal weekdays and end dates<\/li>\n<li>Rolling planning window with the next four active meetings from each recurring series<\/li>\n<li>Linked meeting customization for titles, agendas, images, schedules, logistics, visibility, capacity, internal staff notes and follow-up posts<\/li>\n<li>Individual meeting cancellation without ending the parent series or deleting existing responses<\/li>\n<li>Accessible List, Month and Day views, with search and responsive mobile layouts<\/li>\n<li>Platform-aware venue address links (Apple Maps on Apple devices, Google Maps elsewhere)<\/li>\n<li>Per-event <strong>Public<\/strong> or <strong>Members only<\/strong> audience<\/li>\n<li>Published blog-post follow-ups for event recaps, photos and video<\/li>\n<li>Per-occurrence responses: Planning to attend, Attended or Unable to attend<\/li>\n<li>Optional per-occurrence meeting capacity with live seat availability and overbooking protection<\/li>\n<li>Member-visible response lists with names and statuses, hidden from public viewers<\/li>\n<li>Administrative attendee log with response removal<\/li>\n<li><code>[lapdi_events]<\/code> List\/Month\/Day calendar shortcode<\/li>\n<li><code>[lapdi_events_preview]<\/code> public home-page preview shortcode<\/li>\n<li>Capability-based administration through <code>manage_lapdi_events<\/code><\/li>\n<li>Members-only event visibility supports an optional membership access integration and otherwise remains limited to event administrators<\/li>\n<li>Idempotent importer from The Events Calendar \u2014 safe to re-run without duplicating already-imported records<\/li>\n<li>No public event archive, REST-exposed event details, or direct event permalinks<\/li>\n<\/ul>\n\n<h4>Required framework and optional member integration<\/h4>\n\n<p>LAPDI Events requires TSP Easy Dev to be installed and active. WordPress will block LAPDI Events activation until that dependency is available and active.<\/p>\n\n<p>An optional compatible membership integration can provide the access decision for \"Members only\" events. Without a compatible membership integration active, only users with <code>manage_lapdi_events<\/code> see Members-only events.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate TSP Easy Dev.<\/li>\n<li>If migrating from The Events Calendar, keep it active during the initial import.<\/li>\n<li>Upload LAPDI Events under <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> and activate it.<\/li>\n<li>Go to <strong>Events \u2192 Import Existing Events<\/strong> and run the importer if migrating existing data \u2014 it copies records without changing or deleting the originals, and is safe to re-run.<\/li>\n<li>Review the imported <strong>Events<\/strong>, <strong>Venues<\/strong> and <strong>Organizers<\/strong>.<\/li>\n<li>Add the <code>[lapdi_events]<\/code> shortcode to your events page (commonly at <code>\/events\/<\/code>).<\/li>\n<li>Review <strong>Who can see this event?<\/strong> on every event \u2014 new events default to Public.<\/li>\n<li>Deactivate The Events Calendar only after the import and public page have been verified.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20the%20events%20calendar%20plugin%3F\"><h3>Do I need The Events Calendar plugin?<\/h3><\/dt>\n<dd><p>No \u2014 it's only used as a one-time data source if you're migrating existing events into LAPDI Events with the built-in importer. It isn't required afterward.<\/p><\/dd>\n<dt id=\"how%20do%20i%20limit%20an%20event%20to%20logged-in%20members%3F\"><h3>How do I limit an event to logged-in members?<\/h3><\/dt>\n<dd><p>Edit the event and set <strong>Who can see this event?<\/strong> to <strong>Members only<\/strong>. Users approved by a compatible membership integration can view it when one is active; otherwise, only users who can manage events will see it.<\/p><\/dd>\n<dt id=\"can%20i%20show%20events%20on%20the%20front%20end%20without%20exposing%20a%20public%20archive%3F\"><h3>Can I show events on the front end without exposing a public archive?<\/h3><\/dt>\n<dd><p>Yes \u2014 event, venue and organizer post types are intentionally non-public with no REST exposure or direct permalinks. Use <code>[lapdi_events]<\/code> or <code>[lapdi_events_preview]<\/code> to display them.<\/p><\/dd>\n<dt id=\"which%20recurrence%20patterns%20are%20supported%3F\"><h3>Which recurrence patterns are supported?<\/h3><\/dt>\n<dd><p>Events can occur once or repeat daily, weekly or monthly at a configurable interval. Weekly events can use an explicitly selected weekday. Monthly events can repeat on the same calendar date or on the first, second, third, fourth or last selected weekday, such as the second Tuesday. The configured start date remains the first occurrence, and the recurrence pattern controls later occurrences.<\/p>\n\n<p>The event editor enables only the recurrence controls used by the selected <strong>Repeats<\/strong> option. Switching recurrence types preserves inactive weekly and monthly choices so they are restored if that type is selected again.<\/p><\/dd>\n<dt id=\"how%20do%20i%20plan%20individual%20meetings%20in%20a%20recurring%20series%3F\"><h3>How do I plan individual meetings in a recurring series?<\/h3><\/dt>\n<dd><p>Edit the parent event and use its <strong>Upcoming Meetings<\/strong> panel. The panel always provides the next four active meetings in the series. Select <strong>Customize<\/strong> to give one meeting its own title, agenda, image, date\/time, venue, organizer, meeting location, website, cost, capacity, audience or follow-up post. Details you do not change continue inheriting the parent series. A customized meeting remains linked to the series, and rescheduling it does not detach its existing attendee responses.<\/p>\n\n<p>The parent series and each customized meeting also provide an <strong>Internal staff note<\/strong>. Only signed-in staff and administrators with permission to manage LAPDI Events can see it; it is never included for ordinary members or public visitors.<\/p><\/dd>\n<dt id=\"can%20i%20cancel%20one%20meeting%20without%20ending%20the%20series%3F\"><h3>Can I cancel one meeting without ending the series?<\/h3><\/dt>\n<dd><p>Yes. Customize that meeting and select <strong>Cancel this meeting<\/strong>. It remains visible with a Cancelled label so attendees can see what happened, preserves existing responses, stops accepting new responses and does not consume one of the next four active meeting slots. Reinstate it by clearing the cancellation setting.<\/p><\/dd>\n<dt id=\"how%20do%20i%20link%20directly%20to%20one%20event%20series%20or%20meeting%3F\"><h3>How do I link directly to one event series or meeting?<\/h3><\/dt>\n<dd><p>Use the parent event's WordPress slug in the <code>lapdi_event<\/code> query parameter, for example <code>\/events\/?lapdi_event=weekly-training#lapdi-events-calendar<\/code>. Add <code>lapdi_date<\/code> to select that series on an exact date: <code>\/events\/?lapdi_event=weekly-training&amp;lapdi_date=2026-09-24#lapdi-events-calendar<\/code>. The <strong>Upcoming Meetings<\/strong> panel provides a ready-made <strong>View<\/strong> link for each meeting. Free-text search and calendar navigation preserve the series filter. Sites whose calendar is not at <code>\/events\/<\/code> can customize the generated base URL with the <code>lapdi_events_calendar_url<\/code> filter.<\/p><\/dd>\n<dt id=\"what%20event-response%20data%20is%20stored%3F\"><h3>What event-response data is stored?<\/h3><\/dt>\n<dd><p>When a signed-in user responds, the plugin stores the WordPress user ID, event and occurrence identifiers, response status, and created\/updated timestamps in the site's database. Event administrators can view and remove all responses. Approved members can see respondent names and response statuses, while public viewers cannot. Users can clear their own responses. The plugin does not send response data to an external service and supports WordPress personal data exports and erasure requests.<\/p><\/dd>\n<dt id=\"how%20does%20meeting%20capacity%20work%3F\"><h3>How does meeting capacity work?<\/h3><\/dt>\n<dd><p>Set <strong>Meeting capacity<\/strong> while editing an event. The limit applies separately to each occurrence, including recurring events. <strong>Planning to attend<\/strong> and <strong>Attended<\/strong> each occupy one seat. <strong>Unable to attend<\/strong>, clearing a response, or administrator removal releases the seat. Leave capacity blank or set it to 0 for unlimited attendance.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting LAPDI Events permanently deletes all events, venues, organizers, event categories, attendee responses, and related plugin data. This cannot be undone; create a database backup before deleting the plugin. Ordinary deactivation does not remove data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add optional per-occurrence meeting capacity and available-seat display.<\/li>\n<li>Prevent new attending responses when an occurrence is full, including simultaneous final-seat requests.<\/li>\n<li>Release seats when users become unable to attend, clear their response, or have their response removed.<\/li>\n<li>Add an explicit weekday selector for weekly recurrence.<\/li>\n<li>Add first, second, third, fourth and last weekday patterns for monthly recurrence.<\/li>\n<li>Preserve existing monthly same-date behavior and existing event schedules by default.<\/li>\n<li>Add a rolling four-meeting planning window for every recurring series.<\/li>\n<li>Add linked per-meeting detail overrides with field-level inheritance from the parent series.<\/li>\n<li>Preserve RSVP and capacity identity when an individual meeting is rescheduled.<\/li>\n<li>Add individual meeting cancellation and reinstatement while retaining response history.<\/li>\n<li>Add inheritable per-meeting internal notes visible only to event staff and administrators.<\/li>\n<li>Add exact event-series URL filtering, optional date intersection and ready-made meeting links.<\/li>\n<li>Enable only recurrence fields relevant to the selected repeat pattern while preserving inactive settings.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Manage recurring public and member events, venues, organizers and categories.<\/li>\n<li>Display accessible List, Month, Day and preview calendars.<\/li>\n<li>Import existing records idempotently from The Events Calendar.<\/li>\n<li>Record per-occurrence member responses and provide an administrative attendee log.<\/li>\n<li>Support WordPress personal-data exports, erasure requests and privacy-policy guidance.<\/li>\n<li>Attach published blog-post follow-ups to events for recaps, photos and video.<\/li>\n<li>Require TSP Easy Dev using WordPress's dependency header and path-independent runtime detection.<\/li>\n<li>Provide the Events information page under LAPDI Plugins.<\/li>\n<li>Remove all LAPDI Events content and plugin-owned data safely after an administrator confirms permanent plugin deletion.<\/li>\n<\/ul>","raw_excerpt":"Manage recurring public and member events, venues, and organizers, with calendar shortcodes and a The Events Calendar importer.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346530"}],"author":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/letaprodoit"}],"wp:attachment":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346530"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346530"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346530"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346530"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346530"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}