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.
gazette_entrygazette_entry_kindgazette_relationship[[Target Entry]]Entries are the primary content objects in the plugin. Each gazette_entry can carry metadata such as:
Entries are edited through the standard WordPress admin interface, but they gain worldbuilding-specific metadata and behavior beyond a normal post.
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.
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).
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.
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.
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.
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.
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.
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.