N
HeadlessCoreHeadless Core
Back to Home

Content Model

Complete reference for every custom post type, meta field, and WordPress option exposed to the Next.js frontend.

Custom post types

All public CPTs appear under the Headless Core admin menu and are exposed via WPGraphQL.

Posts (WordPress core)

Field GraphQL Notes
title, content, excerpt Post Standard blog content
slug slug URL: /blog/{slug}
categories categories.nodes Used for blog filters
featuredImage featuredImage.node.sourceUrl Cover image
author author.node Name + avatar

Pages (WordPress core)

Field GraphQL Notes
title, content Page Rendered via [...slug] catch-all
uri nodeByUri Any path, e.g. /about

service — Corporate Services

| Admin label | Corporate Services | | GraphQL single | service | | GraphQL plural | services | | Used by | Corporate, Business, Landing |

Meta key GraphQL field Type Example
headlesscore_icon iconName String Code, Sparkles, TrendingUp, Layout

portfolio_item — Case Studies

| Admin label | Corporate Case Studies | | GraphQL single | portfolioItem | | GraphQL plural | portfolioItems | | Used by | Corporate |

Meta key GraphQL field Type Example
headlesscore_category itemCategory String Financial Technology

Supports featured image for case study thumbnails.

project — Portfolio Projects

| Admin label | Portfolio Projects | | GraphQL single | project | | GraphQL plural | projects | | Used by | Portfolio |

Meta key GraphQL field Type Example
headlesscore_category projectCategory String Web Application
headlesscore_tags projectTags String Next.js, GraphQL, Tailwind (comma-separated)
headlesscore_github_url githubUrl String https://github.com/...
headlesscore_live_url liveUrl String https://demo.example.com

testimonial — Business Testimonials

| Admin label | Business Testimonials | | GraphQL single | testimonial | | GraphQL plural | testimonials | | Used by | Business |

Field Usage
Title Customer name
Content Quote text
headlesscore_author_roleauthorRole Job title
headlesscore_author_companyauthorCompany Company name
headlesscore_ratingrating 1–5 stars

headless_product — Shop Products

| Admin label | Shop Products | | GraphQL single | headlessProduct | | GraphQL plural | headlessProducts | | Used by | Shop |

Meta key GraphQL field Type Example
headlesscore_product_price productPrice String 99.00
headlesscore_product_sale_price productSalePrice String 79.00
headlesscore_product_sku productSku String HC-PRO
headlesscore_product_category productCategory String Software
headlesscore_product_in_stock productInStock String 1 or 0

WooCommerce: If WPGraphQL for WooCommerce is installed, getShopProducts() in Next.js can also query native WooCommerce products. The shop page tries headlessProducts first, then falls back to WooCommerce, then mock data.

team_member — Team Members

| GraphQL single | teamMember | | GraphQL plural | teamMembers | | Used by | Corporate |

lms_course — LMS Online Courses

| Admin label | Courses (LMS) | | GraphQL single | course | | GraphQL plural | courses | | Taxonomy | course_category -> courseCategories | | Used by | LMS, Education, Full-Site Suite |

Meta key GraphQL field Type Example
instructor_name instructorName String Alex Rivera
course_duration courseDuration String 14 Hours
total_lessons totalLessons Int 28

kb_article — Knowledge Base & Wiki Articles

| Admin label | Knowledge Base | | GraphQL single | kbArticle | | GraphQL plural | kbArticles | | Taxonomy | kb_category -> kbCategories | | Used by | Help Center, Docs, Wiki |

GraphQL Mutation Description
voteKbArticle(input: {articleId: ID!, isHelpful: Boolean!}) Increments helpfulVotes or unhelpfulVotes and returns updated vote counts.

⚡ 63 Gutenberg Pro Blocks Suite

Block Slug Category Key Purpose
headlesscore/youtube-embedder Embed Responsive YouTube/Vimeo embedder with privacy mode & custom poster
headlesscore/roi-calculator Interactive Dynamic pricing slider & savings estimation
headlesscore/ai-writer AI One-click AI text rephrasing & summarizer
headlesscore/lottie-player Media Lottie vector animation player
headlesscore/code-highlighter Formatting Code syntax highlighter with copy button
headlesscore/image-compare Media Before/After image comparison slider
headlesscore/audio-player Media Audio & podcast player with waveform
headlesscore/image-hotspots Media Interactive pulsating image hotspot pins
headlesscore/news-ticker Magazine Live breaking news ticker marquee
headlesscore/course-curriculum LMS Course modules & lessons accordion
headlesscore/instructor-card LMS Course instructor profile card
headlesscore/kb-search Wiki Live auto-suggest KB search bar
headlesscore/kb-callout Wiki Documentation note, warning, & tip box
headlesscore/kb-feedback Wiki Interactive article helpfulness voting widget
headlesscore/kb-toc Wiki Auto-generated directory tree table of contents
headlesscore/cta-banner Pro Hero Call to Action banner
headlesscore/pricing-table Pro Multi-plan pricing grid
headlesscore/faq-accordion Pro Expandable FAQ accordion
headlesscore/testimonial-slider Pro Customer testimonial carousel
headlesscore/team-grid Pro Team member avatar grid
headlesscore/stats-counter Pro Animated statistics counter
headlesscore/logo-cloud Pro Partner logo showcase
headlesscore/tabs Pro Tabbed content container
headlesscore/countdown-timer Pro Real-time event countdown timer
... + 39 additional blocks Pro Full-site interactive component suite (total 63 blocks)
Field Usage
Title Person name
Content Bio text
Featured image Avatar photo
headlesscore_member_rolememberRole Job title

faq — Frequently Asked Questions

| GraphQL single | faq | | GraphQL plural | faqs | | Used by | Corporate, Landing |

Field Usage
Title Question
Content Answer

pricing_plan — Pricing Plans

| GraphQL single | pricingPlan | | GraphQL plural | pricingPlans | | Used by | Corporate, Landing |

Meta key GraphQL field Type Example
headlesscore_plan_price planPrice String 99
headlesscore_plan_period planPeriod String month, year, forever
headlesscore_plan_features planFeatures String One feature per line
headlesscore_plan_highlighted planHighlighted String 1 = highlighted card
headlesscore_plan_cta_label planCtaLabel String Get Started
headlesscore_plan_cta_url planCtaUrl String #contact

contact_log — Contact Submissions (admin only)

Not exposed via GraphQL. Created by the submitContactForm mutation. Private post type visible only in wp-admin.


Theme settings (GraphQL: themeSettings)

All options are managed in Headless Core → Settings and exposed as a single themeSettings query.

General

WP option GraphQL field Description
headlesscore_enable_headless enableHeadlessMode Redirect WP frontend to Next.js
headlesscore_nextjs_url headlessRedirectUrl Next.js base URL
headlesscore_logo_url logoUrl Header logo image URL
headlesscore_copyright_text copyrightText Footer copyright
headlesscore_home_layout homeLayout Site mode (see Site Modes)
headlesscore_primary_color primaryColor CSS --primary
headlesscore_accent_color accentColor CSS --accent

Social links

WP option GraphQL field
headlesscore_facebook_url socialLinks.facebook
headlesscore_twitter_url socialLinks.twitter
headlesscore_instagram_url socialLinks.instagram
headlesscore_linkedin_url socialLinks.linkedin
headlesscore_github_url socialLinks.github

SEO & analytics

WP option GraphQL field
headlesscore_seo_description seoDescription
headlesscore_default_share_image defaultShareImage
headlesscore_google_analytics_id googleAnalyticsId

Appearance

WP option GraphQL field Values
headlesscore_header_style headerStyle glass, dark, light
headlesscore_footer_style footerStyle glass, dark, light
headlesscore_maintenance_mode maintenanceMode 0 / 1
headlesscore_default_theme_mode defaultThemeMode dark, light, system
headlesscore_logo_text_size logoTextSize Tailwind class
headlesscore_logo_text_weight logoTextWeight Tailwind class

Site profile (themeSettings.siteProfile)

WP option GraphQL field
headlesscore_site_tagline tagline
headlesscore_hero_title heroTitle
headlesscore_hero_highlight heroHighlight
headlesscore_hero_subtitle heroSubtitle
headlesscore_hero_cta_label heroCtaLabel
headlesscore_hero_cta_url heroCtaUrl
headlesscore_contact_email contactEmail
headlesscore_contact_phone contactPhone
headlesscore_portfolio_bio portfolioBio
headlesscore_portfolio_avatar portfolioAvatar

Portfolio JSON fields

WP option GraphQL field Format
headlesscore_portfolio_skills portfolioSkills [{"category":"Frontend","items":["React","Next.js"]}]
headlesscore_portfolio_timeline portfolioTimeline [{"year":"2024","role":"Engineer","company":"Agency","description":"..."}]

Navigation

themeSettings.navigationMenu resolves the WordPress menu assigned to Primary Navigation location:

[
  { "label": "Blog", "url": "/blog", "path": "/blog" }
]

Licensing

WP option GraphQL field
headlesscore_license_key license.valid, license.tier, etc.

See Licensing.


Pro Gutenberg blocks

Twenty-two license-gated blocks live under the HeadlessCore block category in the Gutenberg editor. Insertion requires a valid pro license; rendering does not — content built with these blocks keeps displaying even if the license later lapses.

Server-side rendering happens in inc/pro-blocks.php (render_callback); the editor UI is in assets/blocks/pro-blocks.js. On the Next.js side, BlockRenderer passes the pre-styled HTML through unchanged.

Block name Block ID Attributes (JSON)
CTA Banner headlesscore/cta-banner heading, text, buttonLabel, buttonUrl
Pricing Table headlesscore/pricing-table plansJson[{title, price, period, features[], highlighted, ctaLabel, ctaUrl}]
FAQ Accordion headlesscore/faq-accordion itemsJson[{question, answer}]
Testimonial Slider headlesscore/testimonial-slider testimonialsJson[{quote, author, role, company, avatarUrl}]
Team Grid headlesscore/team-grid membersJson[{name, role, photoUrl, bio}]
Stats Counter headlesscore/stats-counter statsJson[{value, label}]
Logo Cloud headlesscore/logo-cloud logosJson[{imageUrl, name, url}]
Tabs headlesscore/tabs tabsJson[{label, content}]
Countdown Timer headlesscore/countdown-timer targetDate, heading
Newsletter Signup headlesscore/newsletter-signup heading, placeholder, buttonLabel
Contact Form headlesscore/contact-form heading, submitLabel
Image Gallery headlesscore/image-gallery imagesJson[{url, alt}]
Video Embed headlesscore/video-embed videoUrl, posterUrl, caption
Comparison Table headlesscore/comparison-table comparisonJson{columns, rows: [{feature, values}]}
Team Slider headlesscore/team-slider membersJson[{name, role, photoUrl, bio}]
Photo Album headlesscore/photo-album albumTitle, imagesJson[{url, caption}]
Feature Grid headlesscore/feature-grid featuresJson[{icon, title, description}]
Hero Banner headlesscore/hero-banner heading, subheading, ctaLabel, ctaUrl, imageUrl
Steps headlesscore/steps heading, stepsJson[{title, description}]
Callout headlesscore/callout variant (info/success/warning/error), title, message
Icon List headlesscore/icon-list itemsJson["item", ...]
Magazine Category Grid headlesscore/magazine-category-grid heading, source (auto/manual), maxCategories, postsPerCategory, layout (magazine/grid), showExcerpt, categoriesJson[{slug, name, postCount}]

Use these on any WordPress page rendered via [...slug] / wp_page mode. See Licensing for activation.


Revalidation path mapping

When content is saved, WordPress sends a revalidation webhook with this path:

Post type Path revalidated
post /blog/{slug}
page /{slug}
service, portfolio_item /corporate
project /portfolio
testimonial /business
headless_product /shop
team_member, faq, pricing_plan /corporate
Theme settings / (full layout)