Skip to content

Add post_type_support to decouple RSVP functionality from the gatherpress_event post type, enabling any post type to opt into RSVPs - #1444

Merged
mauteri merged 2 commits into
developfrom
GP-688
Apr 2, 2026
Merged

Add post_type_support to decouple RSVP functionality from the gatherpress_event post type, enabling any post type to opt into RSVPs#1444
mauteri merged 2 commits into
developfrom
GP-688

Conversation

@mauteri

@mauteri mauteri commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Description:

Adds gatherpress-rsvp as a registered post type support on gatherpress_event, decoupling RSVP functionality from the hardcoded post type. Any post type can now opt into the full RSVP system via add_post_type_support('my_cpt', 'gatherpress-rsvp').

Changes include:

  • Replacing Event::POST_TYPE === get_post_type() checks with post_type_supports( get_post_type(), 'gatherpress-rsvp' ) across all RSVP-related PHP classes and blocks
  • get_rsvps() now queries all post types with gatherpress-rsvp support instead of hardcoding gatherpress_event
  • save_post_gatherpress_event hook replaced with save_post + support check for waiting list processing
  • Adds isPostTypeSupporting( support, postType ) generic JS helper; isEventPostType() becomes a thin wrapper around it; RSVP blocks use it to check gatherpress-rsvp for editor dimming context
  • Adds developer documentation

Scope: Covers gatherpress-rsvp only. Venue and online-event supports are planned for future PRs.


Ways to test:

  1. Existing events work unchanged — Create/edit a gatherpress_event post, confirm RSVP blocks render in the editor and on the frontend, RSVP form submissions work, waiting list processes correctly
  2. Custom post type opt-in — Register a CPT with gatherpress-rsvp support, confirm RSVP blocks render and are not dimmed in the editor, and RSVP form submissions work on the frontend
  3. Non-supported post types are blocked — Confirm RSVP blocks dim in the editor on a regular post or page, and RSVP form submissions are rejected with a 400 error
  4. RSVP token emails — Confirm anonymous RSVP email verification links still work for gatherpress_event
  5. Waiting list — Set a max attendance limit, fill it up, confirm waiting list triggers on save for gatherpress_event
  6. PHP unit testsnpm run test:unit:php
  7. JS unit testsnpm run test:unit:js

Changelog Entry

Added - New feature
Changed - Existing functionality

Credits

Props @mauteri

Checklist:

  • I agree to follow this project's Code of Conduct.
  • I have updated the documentation accordingly.
  • I have added tests to cover my change.
  • All new and existing tests pass.

…ress_event post type, enabling any post type to opt into RSVPs.
@github-actions

github-actions Bot commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

✅ WordPress Plugin Check Report

✅ Status: Passed

📊 Report

All checks passed! No errors or warnings found.


🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

@github-actions

github-actions Bot commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Test Coverage Report

All coverage checks passed!

PHP Coverage
=== PR Coverage Check ===

Configuration loaded:
  Minimum coverage: 100%
  Exclude patterns: 42 patterns
  Low coverage exceptions: 2 files

Checking coverage for files changed from origin/develop...

Found 11 changed PHP file(s):
  - includes/core/classes/blocks/class-rsvp-form.php
  - includes/core/classes/blocks/class-rsvp-response.php
  - includes/core/classes/blocks/class-rsvp-template.php
  - includes/core/classes/blocks/class-rsvp.php
  - includes/core/classes/class-event-setup.php
  - includes/core/classes/class-rsvp-form.php
  - includes/core/classes/class-rsvp-query.php
  - includes/core/classes/class-rsvp-setup.php
  - includes/core/classes/class-rsvp-token.php
  - includes/core/classes/class-rsvp.php
  - test/unit/php/includes/tests/core/classes/class-test-event-setup.php

Files requiring coverage check: 10
  - includes/core/classes/blocks/class-rsvp-form.php
  - includes/core/classes/blocks/class-rsvp-response.php
  - includes/core/classes/blocks/class-rsvp-template.php
  - includes/core/classes/blocks/class-rsvp.php
  - includes/core/classes/class-event-setup.php
  - includes/core/classes/class-rsvp-form.php
  - includes/core/classes/class-rsvp-query.php
  - includes/core/classes/class-rsvp-setup.php
  - includes/core/classes/class-rsvp-token.php
  - includes/core/classes/class-rsvp.php

✅ Loaded coverage.xml
✅ Loaded coverage-multisite.xml

✅ includes/core/classes/blocks/class-rsvp-form.php - 100% coverage (266/266 lines)
✅ includes/core/classes/blocks/class-rsvp-response.php - 100% coverage (123/123 lines)
✅ includes/core/classes/blocks/class-rsvp-template.php - 100% coverage (92/92 lines)
✅ includes/core/classes/blocks/class-rsvp.php - 100% coverage (131/131 lines)
⚠️  includes/core/classes/class-event-setup.php - 99.85% coverage (668/669 lines) - Exception allowed
✅ includes/core/classes/class-rsvp-form.php - 100% coverage (249/249 lines)
✅ includes/core/classes/class-rsvp-query.php - 100% coverage (75/75 lines)
✅ includes/core/classes/class-rsvp-setup.php - 100% coverage (132/132 lines)
✅ includes/core/classes/class-rsvp-token.php - 100% coverage (126/126 lines)
✅ includes/core/classes/class-rsvp.php - 100% coverage (264/264 lines)

=== Summary ===
✅ Passed: 9 file(s)
⏭️  Excluded: 1 file(s)
❌ Failed: 0 file(s)

✅ All changed files meet the minimum coverage requirement of 100%
JavaScript Coverage
=== PR JavaScript Coverage Check ===

Configuration loaded:
  Minimum coverage: 100%
  Exclude patterns: 42 patterns

Checking coverage for JavaScript files changed from origin/develop...

Found 4 changed JavaScript file(s):
  - src/blocks/rsvp-count/edit.js
  - src/blocks/rsvp-response/edit.js
  - src/blocks/rsvp/edit.js
  - src/helpers/event.js

Files requiring coverage check: 1
  - src/helpers/event.js

✅ src/helpers/event.js - 100% coverage (62/62 statements)

=== Summary ===
✅ Passed: 1 file(s)
⏭️  Excluded: 3 file(s)
❌ Low coverage: 0 file(s)
❌ Missing coverage: 0 file(s)

✅ All changed JavaScript files meet the minimum coverage requirement of 100%

This comment is automatically updated on each push.

@github-actions

github-actions Bot commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Preview changes with Playground

You can preview the recent changes for PR#1444 with the following PHP versions:

PHP Version 8.4

PHP Version 8.2

PHP Version 7.4

Download .zip with build changes

Made with 💙 from GatherPress & a little bit of WordPress Playground. Changes will not persist between sessions.

@mauteri
mauteri marked this pull request as ready for review April 2, 2026 01:54
@mauteri
mauteri merged commit 7ccc702 into develop Apr 2, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant