Skip to content

Template Overrides

Override the plugin’s default templates from your theme, or extend the template system with custom directories and arguments.

When igcf_get_template() is called, Igcf_Template_Loader searches for the template in this order:

  1. Child theme: {stylesheet_directory}/ignition-crowdfunding/{template}.php
  2. Parent theme: {template_directory}/ignition-crowdfunding/{template}.php
  3. Plugin: {plugin_dir}/public/views/{template}.php
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.

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.php
archive-campaign.php → archive-campaign-content.php → partials/campaign-card.php
→ partials/campaign-filters.php (via action hook)
checkout.php
creator-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}.php
emails/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.

Create a directory in your theme and copy the template:

Terminal window
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.php

Edit the copy. The plugin will use your version automatically.

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 );
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.

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 );

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.

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.