Template Overrides
Override the plugin’s default templates from your theme, or extend the template system with custom directories and arguments.
Template lookup order
Section titled “Template lookup order”When igcf_get_template() is called, Igcf_Template_Loader searches for the template in this order:
- Child theme:
{stylesheet_directory}/ignition-crowdfunding/{template}.php - Parent theme:
{template_directory}/ignition-crowdfunding/{template}.php - Plugin:
{plugin_dir}/public/views/{template}.php
Available templates
Section titled “Available templates”| Template name | File | Description |
|---|---|---|
campaign-form |
campaign-form.php |
Frontend campaign form |
auth-form |
auth-form.php |
Login/registration form |
single-campaign |
single-campaign.php |
Single campaign display |
single-campaign-content |
single-campaign-content.php |
Single campaign content and metadata |
single-campaign-updates |
single-campaign-updates.php |
Published updates on single campaign page |
archive-campaign |
archive-campaign.php |
Campaign listing |
archive-campaign-content |
archive-campaign-content.php |
Campaign archive grid with pagination |
creator-dashboard |
creator-dashboard.php |
Dashboard container with unified sidebar nav (renders all top-level nav items, including the off-canvas drawer scaffolding) |
dashboard-campaign-detail |
dashboard-campaign-detail.php |
Campaign detail view in the dashboard |
dashboard-campaign-updates |
dashboard-campaign-updates.php |
Update management in the dashboard |
dashboard-campaign-share |
dashboard-campaign-share.php |
Creator-facing share surface on the dashboard campaign detail view |
checkout |
checkout.php |
Checkout page (pledge review and confirmation) |
dashboard-pledges |
dashboard-pledges.php |
Backer’s pledge list in the dashboard |
dashboard-pledge-detail |
dashboard-pledge-detail.php |
Single pledge detail view in the dashboard |
dashboard-campaign-pledges |
dashboard-campaign-pledges.php |
Campaign pledge list for creators in the dashboard |
dashboard-update-form |
dashboard-update-form.php |
Campaign update create/edit form in the dashboard |
account-sections/profile |
account-sections/profile.php |
Profile section (first/last name) on the Account item |
account-sections/email |
account-sections/email.php |
Email change section on the Account item |
account-sections/password |
account-sections/password.php |
Password change section on the Account item |
account-sections/notifications |
account-sections/notifications.php |
Notification preferences section on the Account item |
account-sections/privacy |
account-sections/privacy.php |
Privacy section on the Account item |
partials/notice |
partials/notice.php |
Canonical inline notice (severity border, title, message, list); shared by every frontend notice — override once to restyle them all |
partials/campaign-card |
partials/campaign-card.php |
Individual campaign card for archive grid |
partials/campaign-filters |
partials/campaign-filters.php |
Search, filter, and sort form for archive |
partials/campaign-progress |
partials/campaign-progress.php |
Campaign progress bar (raised amount, goal, backers, time) |
partials/pledge-form |
partials/pledge-form.php |
Pledge form on single campaign pages |
partials/pledge-breakdown |
partials/pledge-breakdown.php |
Itemised breakdown of what a charge is made of — shared by the checkout review step, the receipt, the backer’s pledge detail view and the payment-received email (variant => 'email'). Rendered through igcf_render_pledge_breakdown(), which emits nothing when the breakdown is not renderable; override once to restyle every one of them. See the Service Layer. |
partials/password-field |
partials/password-field.php |
Shared password input with strength meter and show/hide toggle (used by registration, claim, reset, and the Account password section) |
partials/auth-form-lostpassword |
partials/auth-form-lostpassword.php |
Lost-password request form on the auth page |
partials/auth-form-reset |
partials/auth-form-reset.php |
Password reset form opened from the email link |
partials/auth-form-confirm-email |
partials/auth-form-confirm-email.php |
Email-change confirmation result page |
partials/auth-form-unsubscribe |
partials/auth-form-unsubscribe.php |
One-click notification unsubscribe confirmation page |
emails/layout |
emails/layout.php |
Shared HTML layout wrapper for all emails |
emails/pledge-confirmation |
emails/pledge-confirmation.php |
Pledge confirmation email (backer) |
emails/payment-received |
emails/payment-received.php |
Payment received email (backer) |
emails/pledge-canceled |
emails/pledge-canceled.php |
Pledge canceled email (backer) |
emails/refund-issued |
emails/refund-issued.php |
Refund issued email (backer) |
emails/campaign-succeeded |
emails/campaign-succeeded.php |
Campaign succeeded email (backer) |
emails/campaign-failed |
emails/campaign-failed.php |
Campaign failed email (backer) |
emails/goal-reached |
emails/goal-reached.php |
Goal reached email (backer) |
emails/campaign-update |
emails/campaign-update.php |
Campaign update published email (backer) |
emails/password-reset |
emails/password-reset.php |
Branded password reset email (replaces the WordPress-default plain-text email) |
emails/email-change-request |
emails/email-change-request.php |
Confirmation link for a pending email address change |
emails/email-changed |
emails/email-changed.php |
Notification sent after an email address change completes |
emails/password-changed |
emails/password-changed.php |
Security alert sent after a password change |
Core ships backer-facing and administrator email templates. The creator-facing email templates (new backer, payment confirmed, approval / rejection, and the campaign lifecycle series) live in the Ignition Platform Mode add-on and are overridable from your theme the same way.
Template hierarchy
Section titled “Template hierarchy”Some templates include sub-templates. Understanding this hierarchy helps you decide which template to override:
single-campaign.php → single-campaign-content.php → partials/campaign-progress.php → partials/pledge-form.php → single-campaign-updates.phparchive-campaign.php → archive-campaign-content.php → partials/campaign-card.php → partials/campaign-filters.php (via action hook)checkout.phpcreator-dashboard.php → dashboard-pledges.php → dashboard-campaign-detail.php → dashboard-campaign-updates.php → dashboard-campaign-pledges.php → dashboard-campaign-share.php → dashboard-pledge-detail.php → account-sections/{profile,email,password,notifications,privacy}.phpemails/layout.php → emails/{email-name}.php (each email template is wrapped by the layout)For example, to customize only the campaign card shown in the archive grid, override partials/campaign-card.php rather than the entire archive-campaign.php template.
Overriding a template
Section titled “Overriding a template”Create a directory in your theme and copy the template:
mkdir -p wp-content/themes/your-theme/ignition-crowdfunding/cp wp-content/plugins/ignition-crowdfunding/public/views/single-campaign.php \ wp-content/themes/your-theme/ignition-crowdfunding/single-campaign.phpEdit the copy. The plugin will use your version automatically.
Template variables
Section titled “Template variables”Templates receive an $igcf_args array. This array is filtered before the template loads:
// Runs for every template.$args = apply_filters( 'igcf_template_args', $args, $template_name, $template_path );Adding data to a specific template
Section titled “Adding data to a specific template”add_filter( 'igcf_template_args', function( $args, $template_name ) { if ( 'single-campaign' === $template_name ) { $args['custom_data'] = get_post_meta( get_the_ID(), '_my_custom_field', true ); } return $args;}, 10, 2 );Then use $igcf_args['custom_data'] in your template override.
Changing the template location
Section titled “Changing the template location”Use the igcf_locate_template filter to load templates from a custom directory (e.g., a plugin):
add_filter( 'igcf_locate_template', function( $located, $template_name, $template_file ) { $custom_path = MY_PLUGIN_DIR . 'templates/' . $template_file; if ( file_exists( $custom_path ) ) { return $custom_path; } return $located;}, 10, 3 );Plugin block templates
Section titled “Plugin block templates”In addition to the PHP templates above, the plugin registers three FSE block templates via register_block_template(). These show up in the standard WordPress template editor and can be customized like any theme template (Site Editor → Templates → Manage all templates).
| Template ID | Use | Constrained width | Includes post title |
|---|---|---|---|
ignitionwp//igcf-page-narrow |
Auth, checkout, and other narrow forms | 480px | No |
ignitionwp//igcf-page-standard |
General-use plugin pages | 800px | No |
ignitionwp//igcf-page-wide |
Frontend dashboard | 1200px | No |
All three templates intentionally omit the core post-title block so plugin-curated pages don’t render two competing H1s. Apply them by editing the page in the block editor and selecting Ignition Page (narrow), Ignition Page (standard), or Ignition Page (wide) under Template in the page sidebar. Each template adds a corresponding body class (.igcf-page--narrow, .igcf-page--standard, .igcf-page--wide) — see CSS Classes — Page width tiers.
The plugin does not register block templates for single-campaign or campaign-archive views — those go through the PHP template hierarchy via Igcf_Single_Campaign::load_template() and Igcf_Archive_Campaign::load_template(). Override them as PHP templates using the table above.
Helper functions
Section titled “Helper functions”igcf_get_template( $template_name, $args = array() )
Section titled “igcf_get_template( $template_name, $args = array() )”Load and render a template through the override system.
igcf_get_template( 'single-campaign', array( 'campaign_id' => $post_id,) );Igcf_Template_Loader::instance()->locate_template( $template_name )
Section titled “Igcf_Template_Loader::instance()->locate_template( $template_name )”Find a template file without rendering it. Returns the absolute path to the template.
Igcf_Template_Loader::instance()->template_exists( $template_name )
Section titled “Igcf_Template_Loader::instance()->template_exists( $template_name )”Check if a template exists. Returns true or false.