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.

⚡ 52 Gutenberg Pro Blocks Suite

Verified directly against register_block_type() calls across inc/pro-blocks*.php — this is the complete, actual list, not a rounded/marketing figure.

Block Slug Category Key Purpose
headlesscore/hero-banner Content & Layout Full-width hero section
headlesscore/feature-grid Content & Layout Icon + text feature grid
headlesscore/steps Content & Layout Numbered process/steps list
headlesscore/callout Content & Layout Highlighted callout box
headlesscore/icon-list Content & Layout Icon-prefixed bullet list
headlesscore/icon-box Content & Layout Icon + heading + text card
headlesscore/divider Content & Layout Section divider rule
headlesscore/spacer Content & Layout Vertical spacing control
headlesscore/bento-grid Content & Layout Asymmetric bento-style grid
headlesscore/table-of-contents Content & Layout Auto-generated page ToC
headlesscore/quote-block Content & Layout Styled pull quote
headlesscore/button-group Content & Layout Grouped CTA buttons
headlesscore/magazine-category-grid Content & Layout Editorial category grid
headlesscore/posts-grid Content & Layout Manually curated post grid
headlesscore/recent-posts Content & Layout Auto-updating recent posts list
headlesscore/blog-archive Content & Layout Full blog archive listing
headlesscore/cta-banner Marketing & Conversion Hero call-to-action banner
headlesscore/split-cta Marketing & Conversion Two-column CTA layout
headlesscore/pricing-table Marketing & Conversion Multi-plan pricing grid
headlesscore/pricing-toggle Marketing & Conversion Monthly/annual pricing toggle
headlesscore/countdown-timer Marketing & Conversion Real-time event countdown
headlesscore/newsletter-signup Marketing & Conversion Newsletter signup form (wired)
headlesscore/popup Marketing & Conversion Triggered popup/modal
headlesscore/alert-banner Marketing & Conversion Dismissible site-wide alert
headlesscore/badge-row Marketing & Conversion Trust/badge row
headlesscore/testimonial-slider Social Proof Customer testimonial carousel
headlesscore/team-grid Social Proof Team member avatar grid
headlesscore/team-slider Social Proof Team members as a scroll-snap slider
headlesscore/stats-counter Social Proof Animated statistics counter
headlesscore/logo-cloud Social Proof Partner/client logo showcase
headlesscore/logo-marquee Social Proof Scrolling logo marquee
headlesscore/star-rating Social Proof Star rating display
headlesscore/author-box Social Proof Post author bio box
headlesscore/before-after Social Proof Before/after image slider
headlesscore/tabs Interactive & Forms Tabbed content container
headlesscore/faq-accordion Interactive & Forms Expandable FAQ accordion
headlesscore/contact-form Interactive & Forms Contact form (wired)
headlesscore/comparison-table Interactive & Forms Feature comparison table
headlesscore/flip-cards Interactive & Forms Hover-to-flip card grid
headlesscore/progress-bar Interactive & Forms Animated progress bar
headlesscore/scrolling-text Interactive & Forms Continuous scrolling text banner
headlesscore/map-embed Interactive & Forms Embedded map
headlesscore/roi-calculator Interactive & Forms Team-size pricing/savings calculator
headlesscore/code-highlighter Interactive & Forms Code block with copy-to-clipboard
headlesscore/image-gallery Media Responsive image gallery
headlesscore/video-embed Media YouTube facade (privacy mode) / Vimeo embed
headlesscore/photo-album Media Captioned photo grid with CSS lightbox
headlesscore/image-compare Media Before/after image comparison slider
headlesscore/image-hotspots Media Image with clickable labeled hotspot pins
headlesscore/audio-player Media Titled audio/podcast player
headlesscore/social-share Utility Social share buttons
headlesscore/timeline Utility Vertical timeline

Not Gutenberg blocks (real features, different mechanism): the LMS (lms_course) and Knowledge Base (kb_article) modules are real custom post types with their own Next.js page templates — they render through dedicated frontend components, not through the block editor, so they don't appear in the block count above.

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)