Connecting post types: Structuring content for businesses

Have you ever tried to display a class schedule on a WordPress site, only to find yourself tangled in relationship fields, complicated ACF setups, or plugin bloat?

Yoga class webpage preview for “Vinyasa Yoga with Malik Diarra” showing a teacher profile, class description, and studio with large windows and plants. The header includes links to CPT Class, CPT Teacher, and Schedule Query. A digital network graphic overlays the top.

In this tutorial-style case study, I’ll walk you through how we structured a clean, scalable system for a fictional yoga studio, using only native Greyd.Suite features.

No plugins. No custom code. Just smart architecture, native performance, and flexibility.

The challenge

Our fictional yoga center needed:

  • Weekly classes, each with a specific teacher, room, style, and level
  • A team of instructors with bios and associated yoga methods
  • Several rooms, each tied to particular styles
  • Filtering by teacher, style, room, level, day, and time
  • A proper chronological schedule, not just filterable content

In most WordPress setups, this would result in complex ACF relationship fields, or repeaters within CPTs. Greyd.Suite offers a better way: global taxonomies and smart custom fields.

The Content Model

Custom Post Types

We use three CPTs:

  • Classroom – physical yoga rooms
  • Class – one post per scheduled session
  • Teacher – instructor bios and skills

Global Taxonomies

Greyd.Suite connects CPTs via six global taxonomies:

  • Instructor – connects classes to teachers
  • Yoga Style – defines the style (Hatha, Vinyasa, Yin, etc.)
  • Level – difficulty level (Beginner, Intermediate, Advanced)
  • Time Slot – general label for when the class happens (e.g. Morning, Evening)
  • Day – weekday the class takes place
  • Room – links to the physical space

These taxonomies allow filtering across any CPT. A term like “Beginner” or “Monday” is shared across posts. No duplication, and full reusability.

Custom Fields

WordPress doesn’t allow sorting by taxonomy. That’s where two custom fields in the Class CPT come in:

  • Time for Sorting – entered in 24-hour format (e.g. 09:00), used to display classes chronologically
  • Day for Sorting – a numeric value (1 = Monday), allows proper weekday order

Together, they solve the biggest limitation in native WordPress: sorting by time and day.

How the pieces fit

Here’s how each CPT is connected:

  • Class is linked to all global taxonomies and has the two sorting fields
  • Teacher is connected to Instructor and Yoga Style
  • Classroom is connected to Room and Yoga Style

This approach lets you:

  • Build instructor pages with automatically loaded classes
  • Group classes by room or style without hardcoding anything
  • Display class schedules that are filterable and sortable

Building the display templates

Greyd.Suite’s visual editor makes it easy to query, sort, and display content dynamically. Some common templates include:

1. Weekly class overview

Loop over Class posts, filtered by the current week. Add frontend filters for:

  • Yoga Style
  • Instructor
  • Room
  • Level
  • Day

Then sort the loop using:

  • Day for Sorting
  • Time for Sorting

This gives you a clean, chronological weekly view—something you can’t achieve with taxonomies alone.

2. Single class view

For each Class post:

  • Pull in the Teacher bio by matching the Instructor term
  • Display the Room details
  • Show all relevant taxonomy terms (style, level, day, time slot)

3. Teacher profile

Show one Teacher post with a dynamic list of classes:

  • Use a query to list Class posts that match the same Instructor term
  • Sort by time
  • Optionally filter by Yoga Style

4. Room detail page

Same idea: filter Class posts by the current Room term. Let users view what’s happening in that space this week.

Why this works for real businesses

This setup isn’t just elegant, it’s simply practical.

If your yoga studio adds new instructors, styles, or rooms, you just add taxonomy terms. Want to show classes on Friday afternoons with advanced difficulty in the Lotus Room? Done in seconds.

You’re not locked into rigid relationships. And because Greyd.Suite uses WordPress’s native query engine, everything loads superfast.

TL;DR

Don’t fight WordPress, work with it. With Greyd.Suite, you can:

  • Use post types for content structure
  • Use global taxonomies for filtering
  • Add custom fields for sorting
  • Build dynamic templates that scale

This approach is fast, flexible, and future-proof.

Want to try it yourself? Download the free version of Greyd.Suite, then grab the demo site and import it via the Greyd Hub.