Ignition Crowdfunding v0.3.0
This release overhauls the plugin’s backend architecture. Business logic moves into a dedicated service layer, a full REST API replaces most AJAX endpoints, and state-transition actions use the new WordPress Abilities API. The frontend JS is migrated from jQuery.ajax to wp.apiFetch. User-facing behavior is unchanged.
New Features
Section titled “New Features”- REST API — Full CRUD endpoints under
igcf/v1for campaigns, campaign updates, and settings. See REST API Reference. - WordPress Abilities API — 11 registered abilities for campaign and update state-transition actions (approve, reject, pause, resume, end, close, feature, withdraw). See Abilities Reference.
- Service layer —
Igcf_Campaign_ServiceandIgcf_Update_Serviceclasses extract business logic from handlers into reusable, testable services. Add-ons can call these directly. - Timezone-aware dates — New
igcf_is_future_date()helper useswp_timezone()for correct status transitions when the site timezone differs from UTC.
Changed
Section titled “Changed”- Frontend JS migrated from AJAX to REST + Abilities —
campaign-form.js,dashboard.js,campaign-list.js, andupdate-list.jsnow usewp.apiFetchinstead ofjQuery.ajax. All four scripts declarewp-api-fetchas a dependency. - Minimum WordPress version raised to 6.9 — Required for the Abilities API. See Installation.
- AJAX handlers removed — Campaign moderation actions (
igcf_campaign_approve,igcf_campaign_reject, etc.), update CRUD (igcf_update_create,igcf_update_edit,igcf_update_delete), and update moderation (igcf_update_approve,igcf_update_reject) are replaced by REST + Abilities. The auth form AJAX endpoints (igcf_login,igcf_register) and campaign duplication are unchanged.
Bug Fixes
Section titled “Bug Fixes”- Fixed partial update edits unintentionally removing existing thumbnails.
- Fixed campaign status mismatches near midnight when site timezone differs from UTC.
Developer
Section titled “Developer”- REST API —
igcf/v1/campaigns(CRUD),igcf/v1/campaigns/{id}/updates(CRUD),igcf/v1/settings(read-only). See REST API Reference. - Abilities API — 11 abilities across 2 categories (
igcf-campaigns,igcf-updates). See Abilities Reference. - Service classes —
Igcf_Campaign_Service(create, update, delete, transition_status) andIgcf_Update_Service(create, update, delete, moderate). - New action hooks —
igcf_campaign_before_delete,igcf_campaign_deleted. See Actions Reference. - New filter hooks —
igcf_rest_campaigns_query_args,igcf_rest_prepare_campaign,igcf_rest_pre_insert_campaign,igcf_rest_prepare_update. See Filters Reference. - Removed hooks —
igcf_campaign_form_before_submit,igcf_campaign_form_after_submit,igcf_campaign_form_validation_failed,igcf_campaign_published,igcf_campaign_form_submit_redirect,igcf_campaign_form_validation— these were part of the AJAX form submission pipeline that no longer exists. - Localized data changes —
ajaxUrlandnonceremoved fromigcfCampaignForm,igcfDashboard,igcfCampaignList,igcfUpdateList. Scripts now usewp.apiFetchfor authenticated requests. See Blocks & Shortcodes Reference. - Architecture guide — New
doc/architecture.mdin the repository documents the three-layer pattern (service → REST/Abilities → JS).