Skip to content

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.

  • REST API — Full CRUD endpoints under igcf/v1 for 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_Service and Igcf_Update_Service classes extract business logic from handlers into reusable, testable services. Add-ons can call these directly.
  • Timezone-aware dates — New igcf_is_future_date() helper uses wp_timezone() for correct status transitions when the site timezone differs from UTC.
  • Frontend JS migrated from AJAX to REST + Abilities — campaign-form.js, dashboard.js, campaign-list.js, and update-list.js now use wp.apiFetch instead of jQuery.ajax. All four scripts declare wp-api-fetch as 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.
  • Fixed partial update edits unintentionally removing existing thumbnails.
  • Fixed campaign status mismatches near midnight when site timezone differs from UTC.
  • 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) and Igcf_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 — ajaxUrl and nonce removed from igcfCampaignForm, igcfDashboard, igcfCampaignList, igcfUpdateList. Scripts now use wp.apiFetch for authenticated requests. See Blocks & Shortcodes Reference.
  • Architecture guide — New doc/architecture.md in the repository documents the three-layer pattern (service → REST/Abilities → JS).