How to Create a Reusable WordPress Component with JetEngine
๐ **Source:** [How to Create a Reusable WordPress Component with JetEngine](https://www.youtube.com/watch?v=_yL9lbiSGyE)
> [!note]+ Document Notes
> tags:
> - #WordPress
> - #JetEngine
> - #BricksBuilder
> Author: Presenter not explicitly identified in the video transcript
> Source: YouTube (tutorial video)
> Reference: https://www.youtube.com/watch?v=_yL9lbiSGyE
> date created: 2025-08-20 12:00
>
> # ๐งฑ Title: Reusable Components with JetEngine (Elementor + Bricks) โ From Controls to Query Loops
>
<!-- deep-read:sections start -->
## ๐งญ Table of Contents:
- [๐ Summary](#-summary)
- [๐ Main Content](#-main-content)
- [๐๏ธ Notes](#๏ธ-notes)
- [๐ References](#-references)
- [๐ฃ๏ธ Paraphrase](#-paraphrase)
- [๐ฐ Newsletter](#-newsletter)
- [โ
Action Items](#-action-items)
- [๐งช Hypotheses](#-hypotheses)
- [๐ Methodology](#-methodology)
- [โ Questions](#-questions)
- [๐ฎ Future Research](#-future-research)
- [๐ก Implications](#-implications)
- [๐ง Learning Styles Assessment](#-learning-styles-assessment)
- [โฟ Accessibility Assessment](#-accessibility-assessment)
- [๐ DEIB Assessment](#-deib-assessment)
- [๐งฎ Logical Validity](#-logical-validity)
- [๐ก๏ธ DARVO Analysis](#-darvo-analysis)
- [๐ SEO Evaluation](#-seo-evaluation)
- [๐ฏ Conclusion](#-conclusion)
### ๐ References: Include a list of sources consulted and cited in the article.
## ๐ Summary:
- ๐น The video shows how to build **reusable JetEngine components** and then reuse them across pages and templates in **Elementor** and **Bricks**.
- ๐น You define **content controls** (text, select, media, etc.) and **style controls** (colors, overlays), bind them to widgets via **dynamic tags**, and drop the component in different contexts.
- ๐น In **Bricks**, you configure controls in JetEngineโs settings, then use the component inside a **query loop** to display related data (e.g., doctors โ services).
- ๐น The core payoff: **build once, reuse everywhere**, while keeping per-instance adjustments easy.
## ๐ Main Content:
- ๐น **What is a JetEngine component?** ([0:10โ0:50](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=10))
- ๐ธ A partially preconfigured template usable across pages, listings, or singles; perfect for CTAs, headers, pop-ups.
- ๐น **Elementor flow: create + bind** ([1:05โ5:07](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=65))
- ๐ธ Create a component, set the **editor** to Elementor.
- ๐ธ Add **content controls**: CTA title, text area, image, button label (select), and button link.
- ๐ธ Bind controls to widgets via **dynamic tags** (e.g., Heading โ Component Control Value).
- ๐น **Style controls** ([6:19โ8:15](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=379))
- ๐ธ Define color controls (text, overlay gradient parts, button).
- ๐ธ Assign those to element styles via **Component Control Color**.
- ๐น **Reuse on static and dynamic pages** ([8:20โ11:11](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=500))
- ๐ธ Drop the component on the homepage and fill **static** values.
- ๐ธ On single service templates, switch fields to **dynamic** sources (post title, custom fields, featured image).
- ๐น **Bricks flow + query loop** ([11:24โ16:18](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=684))
- ๐ธ Create a Bricks-view component but set **controls** from JetEngineโs settings UI.
- ๐ธ Use **Query Loop** in Bricks to repeat containers for doctor posts; add dynamic fields and a dynamic image.
- ๐ธ Insert the component and change **context** to a **related items** relation (services โ doctors) so the component shows service data per doctor.
- ๐ธ Configure flex grid (row, wrap) for responsive multi-column listings.
### ๐๏ธ Notes
- ๐น **Components vs Listings** ([0:26โ0:45](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=26))
- ๐ธ Components can live outside loops; listings are loop-centric.
- ๐ธ Use components for repeatable UI chunks you want everywhere.
- ๐น **Control types & defaults** ([2:36โ3:14](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=156))
- ๐ธ Text, Text Area, Rich Text, Select, Single Media.
- ๐ธ Defaults fill placeholders when values are missing.
- ๐น **Dynamic bindings in Elementor** ([4:31โ5:07](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=271))
- ๐ธ Heading widget โ Component Control Value โ `CTA title`.
- ๐ธ Text Editor โ `CTA text`; Dynamic Link โ `button link` and `button text`.
- ๐น **Background image via control** ([5:50โ6:09](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=350))
- ๐ธ Use container background image โ dynamic source โ `CTA image`.
- ๐น **Style controls mapped** ([7:31โ8:07](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=451))
- ๐ธ Text color control bound to headings and body text.
- ๐ธ Button color control bound to the dynamic link widget.
- ๐ธ Overlay gradient colors bound to container overlay.
- ๐น **Static reuse on homepage** ([8:30โ9:24](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=510))
- ๐ธ Fill content controls directly; choose button variant via **Select**.
- ๐น **Dynamic reuse on singles** ([9:39โ11:11](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=579))
- ๐ธ Title from **Current Object Field โ Post Title** with prefix/suffix.
- ๐ธ Description from **JetEngine custom field**; image from **Post Thumbnail**.
- ๐น **Bricks component configuration** ([12:06โ13:26](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=726))
- ๐ธ Define two controls: service title, service description.
- ๐ธ Bind in Bricks via dynamic data picker (labels match control names).
- ๐น **Query Loop + related context** ([13:31โ15:36](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=811))
- ๐ธ Activate **Query Loop**; pick **JetEngine Query Builder โ doctors query**.
- ๐ธ Change component **context** to โrelated items from services to doctors.โ
- ๐ธ Map service fields; grid with flex wrap for columns.
- ๐น **Tone & bias**
- ๐ธ Tone: calm, practical, instructive.
- ๐ธ Mild bias toward Elementorโs ease-of-use claim; Bricks noted as different process, not inferior.
## ๐ References:
- ๐น Video: *How to Create a Reusable WordPress Component with JetEngine* โ https://www.youtube.com/watch?v=_yL9lbiSGyE
- ๐น JetEngine (Crocoblock) product page โ https://crocoblock.com
- ๐น Bricks Builder โ https://bricksbuilder.io
- ๐น WordPress dynamic data concepts โ https://developer.wordpress.org/themes/basics/the-loop/
## ๐ฃ๏ธ Paraphrase:
- ๐น **Defining and binding controls** ([2:00โ5:07](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=120))
- ๐ธ Original idea: Set up content and style controls, then attach them to widgets via dynamic tags so a single component can adapt per use.
- ๐ธ Paraphrase: Create named knobs for text, media, and colors, and wire those knobs into widgets. Later, twist the knobs per page instead of rebuilding the UI.
- ๐น **Bricks + related context** ([13:31โ15:36](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=811))
- ๐ธ Original idea: Put the component inside a query loop and switch its context to a post relation to show the right service data per doctor.
- ๐ธ Paraphrase: Repeat a layout for each doctor, then point the componentโs data lens at โtheirโ services. The loop handles repetition; context picks the right source.
## ๐ฐ Newsletter:
- ๐น **Build once, reuse everywhere.** JetEngine components let you prewire content and color controls, then drop the same CTA across Elementor pages and Bricks templates.
- ๐น **Elementor:** Bind controls with dynamic tags; swap copy and images in seconds.
- ๐น **Bricks:** Add the component inside a **Query Loop** and switch context to show related data (e.g., doctors โ services).
- ๐น **Try it:** Video tutorial โ https://www.youtube.com/watch?v=_yL9lbiSGyE โข JetEngine โ https://crocoblock.com โข Bricks โ https://bricksbuilder.io
- ๐น **Community notes:** Share component patterns for healthcare, education, and events. Reuse beats rebuild.
## โ
Action Items:
- ๐น **Reusable prompt (aligned to open-source advocacy, contributor engagement, education, and OSPO goals):**
- ๐ธ โFor the attached resource, extract how its techniques support **reusable design systems** in WordPress. Map to: (1) **onboarding** materials for new contributors, (2) **transparency** practices (naming, versioning, docs), (3) **education** artifacts for Learn.WordPress.org, (4) **sustainability** via reuse and fewer one-off templates, (5) **OSPO** policy fit: component governance, review checklists, and deprecation guidance. Output: TL;DR, teaching outline, contributor tasks, sample rubric, KPIs, DEIB notes, and risk mitigations.โ
- ๐น **Programmatic next steps:**
- ๐ธ Build a **Component Library** repo (Elementor + Bricks examples) with a **controls schema** and **usage notes**.
- ๐ธ Publish a **Learn WordPress** lesson: โJetEngine Components 101 + Context Switching in Bricks Query Loops.โ
- ๐ธ Draft an **OSPO-style guideline**: naming conventions, control types, context rules, and changelog templates.
- ๐ธ Add **CI checks** for component JSON validity and control-name collisions.
- ๐ธ Track KPIs: build time saved, defect rate after reuse, and content-editor satisfaction.
## ๐งช Hypotheses:
- ๐น H1: A shared component library reduces new page build time by **โฅ35%** across teams.
- ๐น H2: Standardized control names increase editor adoption and reduce support tickets by **โฅ25%**.
- ๐น H3: Using related-context patterns in Bricks improves content accuracy on multisite catalogs by **โฅ20%**.
### ๐ Methodology:
- ๐น **Design:** A/B teams (library vs ad hoc) over 8 weeks; measure build time and post-launch fixes.
- ๐น **Data sources:** Git commits, PR review notes, GA4 events (component insertions), support tickets, editor surveys.
- ๐น **Analysis:** MannโWhitney for time distributions; chi-square on defect counts; thematic coding on editor feedback.
### โ Questions:
- ๐น Which **minimal set of controls** covers 80% of CTA use cases?
- ๐น How should we version components to balance **stability** with **iteration**?
- ๐น Whatโs the best practice for **context switching** when relations are many-to-many?
### ๐ฎ Future Research:
- ๐น Build a **control-linter** that flags unclear labels, missing defaults, and non-semantic names.
- ๐น Explore **access-control** for who can edit style vs content controls in large teams.
- ๐น Compare **performance** of component-heavy pages across builders.
### ๐ก Implications:
- ๐น Strong component governance reduces rework and keeps brand/UI consistent.
- ๐น Education + standards lower the barrier for first-time contributors and content editors.
### ๐ง Learning Styles Assessment:
- ๐น **Readability score (approx.):** Grade **9โ10** conversational technical style.
1. **Visual (Spatial)**
- ๐น Present: On-screen UI steps; implicit visuals.
- ๐น Improve: Add flowcharts for control binding and context graphs for relations.
2. **Aural (Auditory-Musical)**
- ๐น Present: Narration throughout.
- ๐น Improve: Provide a brief audio summary + chapter markers.
3. **Verbal (Linguistic)**
- ๐น Present: Clear labels and step lists.
- ๐น Improve: Glossary for โcontext,โ โrelated items,โ and โquery loop.โ
4. **Physical (Kinesthetic)**
- ๐น Present: Guided clicks; reproducible steps.
- ๐น Improve: Downloadable sandbox with exercise tasks and checkpoints.
5. **Logical (Mathematical)**
- ๐น Present: Control โ widget โ output chain.
- ๐น Improve: Decision tree for when to use **Select** vs **Text** controls, and when to switch context.
6. **Social (Interpersonal)**
- ๐น Present: Solo tutorial.
- ๐น Improve: Add forum thread or Slack channel for pattern sharing.
7. **Solitary (Intrapersonal)**
- ๐น Present: Transcript suits self-paced study.
- ๐น Improve: Reflection prompts: โName three controls your CTA needs and why.โ
8. **Naturalistic**
- ๐น Present: None.
- ๐น Improve: N/A for this topic.
### ๐ Accessibility Assessment:
- ๐น **Screen Reader Compatibility:**
- ๐ธ Ensure headings are semantic; label dynamic controls and images; include alt text for example screenshots.
- ๐น **Keyboard Navigation:**
- ๐ธ Verify all control fields, color pickers, and dynamic-tag pickers are keyboard reachable; visible focus states required.
- ๐น **Contrast & Readability:**
- ๐ธ Meet **WCAG 2.2 AA** for text and UI elements; avoid low-contrast overlays on images.
- ๐น **Text Resizing:**
- ๐ธ Confirm layouts remain usable at 200โ400% zoom; allow line wrapping in long labels.
### ๐ DEIB (Diversity, Equity, Inclusion, and Belonging) Assessment:
- ๐น **Cultural Relevance:**
- ๐ธ Example set is healthcare; add examples from nonprofit, education, and small business.
- ๐น **Inclusive Language:**
- ๐ธ Mostly neutral; define jargon terms for non-native English speakers.
- ๐น **Neurodiversity Support:**
- ๐ธ Chunk tasks; provide checklists and end-of-section summaries.
- ๐น **Representation:**
- ๐ธ Invite community-submitted components from diverse teams and regions.
- ๐น **Psychological Safety:**
- ๐ธ Encourage experimentation; show how to revert safely; provide clear error recovery steps.
### ๐งฎ Logical validity:
- ๐น **Sound reasoning present**
- ๐ธ *Causal reasoning* ([1:05โ5:07](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=65)): Define controls โ bind to widgets โ component becomes reusable. This sequence is coherent and repeatable.
- ๐ธ *Balanced view* ([11:24โ12:06](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=684)): Acknowledges Bricks uses a different flow; demonstrates parity via query loops.
- ๐ธ *Appeal to evidence (procedural)*: Steps are demonstrated live with working outputs.
- ๐น **Potential fallacies or weak spots**
- ๐ธ *Hasty generalization* ([1:20โ1:26](https://www.youtube.com/watch?v=_yL9lbiSGyE&t=80)): โElementor offers the quickest wayโ is context-dependent; not universally true.
- ๐ก Improve: Provide timing metrics or criteria (steps count, clicks, learning curve).
- ๐ธ *Appeal to authority* (implicit brand trust): Assumes JetEngine/Bricks are โsmoothโ without comparing rivals.
- ๐ก Improve: Add a short matrix comparing ACF Blocks, native patterns, or other builders.
- ๐น **Tone of voice:** Calm, instructional, pragmatic; light marketing phrasing yet mostly task-focused.
## ๐ก๏ธ DARVO Analysis:
- ๐น **Deny:** None. The tutorial does not dismiss issues; it acknowledges limitations (Bricks config differs) and demonstrates fixes.
- ๐น **Attack:** None. No negative framing of tools or users.
- ๐น **Reverse Victim and Offender:** None. No attempt to claim unfair treatment or shift blame.
- ๐น **Notes:** The rhetoric is **supportive**, process-oriented, and free of DARVO tactics.
### ๐ SEO Evaluation:
1. **Keywords**
- ๐น Present: โJetEngine components,โ โElementor,โ โBricks,โ โquery loop,โ โdynamic tags.โ
- ๐น Improve: Add long-tails like โJetEngine component controls,โ โBricks related items context,โ โElementor dynamic CTA.โ
2. **Meta Description**
- ๐น Include a 150โ160 char summary: โBuild reusable JetEngine components in Elementor and Bricks, bind dynamic controls, and show related data in Bricks query loops.โ
3. **Title Tag**
- ๐น Keep โค60 chars, include โJetEngine,โ โElementor,โ โBricks.โ
4. **Headers**
- ๐น Use H2/H3 for โCreate controls,โ โBind to widgets,โ โBricks query loop,โ โRelated context.โ
5. **Content Length**
- ๐น Target 1,200โ1,800 words for written companion guide with step screenshots.
6. **Internal/External Links**
- ๐น Internal: Related tutorials on CPTs, relations, and dynamic fields.
- ๐น External: Link to official JetEngine and Bricks docs pages used.
7. **URL Structure**
- ๐น Short slug: `/jetengine-components-elementor-bricks-query-loop`.
8. **Image Optimization**
- ๐น Descriptive filenames; alt text including control names; compress images.
9. **Mobile Optimization**
- ๐น Lazy-load screenshots; ensure code snippets scroll horizontally.
10. **User Engagement**
- ๐น Add CTA to download sample component; embed a sandbox.
11. **Schema Markup**
- ๐น `VideoObject` + `Article`; add `HowTo` steps if the guide lists tasks.
12. **Social Sharing**
- ๐น Open Graph + Twitter Cards with an annotated screenshot of controls sidebar.
## ๐ฏ Conclusion:
- ๐น JetEngine components centralize repeatable UI with **named controls** and **dynamic bindings**, while Bricks adds **query loops** and **related-context** power.
- ๐น Standardize naming, defaults, and context rules, then publish a component library to accelerate builds and reduce support load.
- ๐น This approach suits contributor onboarding, transparent governance, and long-term sustainability in WordPress projects.
<!-- deep-read:sections end -->