iBUILDiT
iBUILDiT is a modular WordPress theme with an ACF‑powered page builder, reusable global sections, and a curated admin settings panel for styling and site metadata.
Highlights
- ACF Pro Flexible Content page builder (auto‑registered from module schemas)
- Custom module selector with search and filters
- Reusable Global Sections (insert anywhere as a module)
- Admin settings page with design tokens, custom CSS/JS, header/footer code
- Fullscreen mega menu header layout
- Announcement bar (scheduled announcements, top of site)
- Child‑theme module support (child overrides parent)
Requirements
- WordPress 5.4+ (tested)
- PHP 5.6+ (theme baseline)
- ACF Pro (required)
- iPL Mega Menu (required for the header menu)
Both plugins are bundled as zip files in:
inc/plugins/advanced-custom-fields-pro.zipinc/plugins/ipl-mega-menu.zip
The theme will prompt admins to install/activate them.
Quick Start
- Install the theme in
wp-content/themes/iBUILDiT. - Activate the theme in WP Admin.
- Install/activate the required plugins via the admin notices.
- Go to iBUILDiT in the admin sidebar to configure global settings.
Page Builder (ACF)
The page builder is a Flexible Content field group created programmatically from module schemas. You will see the builder on pages, posts, and public CPTs.
Location:
- Group:
iBUILDiT - Field:
Page Builder
Modules
Modules live in:
/template-parts/modules/{module_name}/
index.php
style.css
scripts.js (optional)
schema.json
Module Schema Format
{
"title": "Hero",
"name": "hero_module",
"category": "Hero",
"tags": ["hero", "cta"],
"description": "Full-width hero with image and CTA.",
"fields": [
{ "label": "Heading", "name": "heading", "type": "text" },
{ "label": "Button Link", "name": "button_link", "type": "link" }
]
}
Module Schema Starter
Use this as a baseline when creating a new module schema. It includes the common metadata plus the optional section_id field for anchors.
{
"title": "New Module",
"name": "new_module",
"category": "Content",
"tags": ["tag1", "tag2"],
"description": "Short description shown in the module picker.",
"include_globals": [
"section_id"
],
"fields": [
{ "label": "Heading", "name": "heading", "type": "text" },
{ "label": "Text", "name": "text", "type": "textarea" },
{ "label": "Button Link", "name": "button_link", "type": "link" }
]
}
Tip: If your module includes repeaters or groups, use sub_fields inside those field definitions.
Global Sections (Reusable)
Global Sections are a custom post type that also uses the page builder. Insert a global section anywhere with the Global Section module.
Admin: Global Sections
Child Theme Support
Child themes can add or override modules by creating:
/wp-content/themes/your-child/template-parts/modules/{module_name}/
Child modules take precedence over parent modules with the same name.
A sample child theme exists in:
/wp-content/themes/iBUILDiT-child
Notes
- Field groups are generated at runtime, so they do not appear in the ACF Field Groups list by default.
- Modules are loaded dynamically and only their CSS/JS are included.
Announcements
Announcements are managed in the Announcements post type and display at the very top of the site.
Fields
- Message
- Link (optional)
- Start/End date time (optional)
- Background and text colors
If multiple announcements are active, they rotate every 5 seconds.
Fullscreen Header Slider (Main Header)
The Main Header module supports vertical/horizontal slides, mousewheel control, optional arrows, and per‑slide overlay color.
Interaction behavior (vertical):
- Captures scroll/touch only when the slider is mostly visible.
- Releases page scroll at the first/last slide.
- One slide per gesture for predictable navigation.
Theme CSS Variables
The iBUILDiT settings page outputs CSS variables you can use in module styles.
Available variables
--ib-primary--ib-secondary--ib-bg--ib-text--ib-font--ib-font-size--ib-h1-size--ib-h2-size--ib-h3-size--ib-h4-size--ib-h5-size--ib-h6-size--ib-container--ib-pad-top--ib-pad-bottom--ib-menu-bg--ib-header-bg--ib-footer-bg--ib-social-icon-size
Example
.my-module {
color: var(--ib-text);
background: var(--ib-bg);
font-family: var(--ib-font);
padding-top: var(--ib-pad-top);
padding-bottom: var(--ib-pad-bottom);
}
.my-module .button {
background: var(--ib-primary);
color: #fff;
}