GazetteBuilder

GazetteBuilder

Details
View on WordPress

GazetteBuilder is a WordPress plugin for organizing worldbuilding content as structured, connected records. It is designed for lore databases, campaign setting reference sites, story-driven publishing, and timeline-based narrative content.

At its core, GazetteBuilder gives WordPress a dedicated model for entries, entry types, story progression, semantic references, and controlled relationship vocabulary.

What it provides

  • A custom post type: gazette_entry
  • A taxonomy: gazette_entry_kind
  • A custom post type for relationship definitions: gazette_relationship
  • Story-aware entry sequencing and release controls
  • Semantic reference linking via [[Target Entry]]
  • Timeline rendering based on timeline sort values
  • ZIP-based import support for packaged lore content
  • Public entry-type archive pages and filtered listing controls
  • Admin screens for managing metadata, entry types, and relationship definitions

Entries

Entries are the primary content objects in the plugin. Each gazette_entry can carry metadata such as:

  • Entry ID
  • Entry Type
  • Summary
  • Campaign Date
  • Story ID
  • Sequence Position
  • Release Date
  • Timeline Sort
  • Derived From
  • Featured Media
  • Unit label and continuation/ending text

Entries are edited through the standard WordPress admin interface, but they gain worldbuilding-specific metadata and behavior beyond a normal post.

Entry Types

Entry types are stored as taxonomy terms in gazette_entry_kind. The plugin can seed default kinds such as Location, Character, Organization, Culture, Technology, Creature, Vessel, Document, Artifact, Event, Reference, and Story. These terms are used to classify entries and can drive public archive indexes.

Relationships

GazetteBuilder supports a controlled relationship vocabulary for describing how one entry connects to another. Relationship types are defined as posts in gazette_relationship and include a relationship ID, canonical name, inverse label, source/target entry types, symmetry settings, multiple-relationship settings, and forward/inverse display rules.

Relationships are declared per Entry using the format:

Relationship Name: Target Entry

For example:

Located in: Syrtis Major
Member of: Royal Geographical Society

These declarations are resolved against actual Entries on the site. When a declaration resolves, the source Entry displays a forward relationship link, and the target Entry automatically displays a reverse (inverse) listing of every Entry that points to it, using the relationship’s configured inverse label. No separate declaration is needed on the target Entry.

Reverse relationship listings are alphabetized with letter dividers and jump navigation, rendered in a multi-column layout. The number of columns is configurable from GazetteBuilder Options (1-6, default 2).

Story support

Stories are built by organizing entries through a shared Story ID and sequence position. This allows the plugin to group sequential content into a story arc, expose landing and continue flow for readers, protect unreleased entries behind a release model, and redirect readers away from unavailable story steps.

Semantic references

GazetteBuilder supports inline semantic links using the syntax [[Target Entry Name]]. When a matching published entry exists and is release-eligible, the reference is rendered as a link. Otherwise it remains plain text or unresolved, depending on site configuration.

Timeline and display features

The plugin supports timeline-driven output with the [gazette_timeline] shortcode, including types, min, max, orientation, and summary attributes. Entries are included in published timelines when they have valid sort data, release visibility, and relevant metadata.

Entry-type indexes

For entry types marked as indexable, the plugin exposes public archives such as /entry-type/location/ and /entry-type/character/, sortable by title or release date.

Import workflow

GazetteBuilder includes ZIP-based import support for packaged worldbuilding content, including Markdown entry files, media files, front matter metadata, story and release metadata, timeline sort values, semantic reference data, and relationship declarations. The importer validates packages before creating content and reports invalid input instead of silently importing broken data.

Release model

GazetteBuilder supports a release-aware visibility model: published Entries with no Release Date are immediately readable, future Release Dates keep otherwise published Entries hidden until they become available, and Story Entries redirect readers away from unavailable steps.

Details

Plugin code:
gazettebuilder
Plugin version:
1.0.0
Outdated:
No
WP version:
7.1 or higher
PHP version:
8.3 or higher
Test up to WP version:
7.1
Total installations:
0
Last updated:
2026-08-31
Rating:
Times rated:
0
custom-post-type
lore
storytelling
timeline
worldbuilding