Custom WordPress theme and content-model plugin powering lorenabarba.com, the research group website of Prof. Lorena A. Barba (George Washington University). Built July 2026 to replace a 2012 agency theme; see HISTORY.md for that story and DESIGN.md for the design system it implements.
barba-2026/ The theme: templates, design-token CSS, self-hosted fonts,
inline SVG icons, masonry feed + reveal animation (grid.js),
archive filters + scrollspy (archive.js)
mu-plugins/ barba-core.php — the content model, kept OUT of the theme so
it survives any future theme change:
· `publication` post type + [pub] shortcode + citation builder
· `event` post type (timeline entries)
· `tweet` post type (archived-tweet cards)
· Figshare API v2 module with stale-tolerant transient cache
· legacy-URL 301 redirects
fields/ Field-group definitions (JSON) for the publications database —
import via Secure Custom Fields → Tools
tools/ build-import-packages.py — converts legacy exports (tweet cache
CSV, X personal archive, old events pages) into WordPress
import files (WXR)
docs/ The rebuild plan that guided the 2026 migration
- Masonry home feed of news, blog posts, Figshare artifact cards (live views and download counts), and archived tweets that surface as visitors page into the past. CSS grid + ~150 lines of dependency-free JS; plain-grid fallback without JS; "load more" instead of infinite scroll.
- Publications archive: one page generated from the database, grouped by year, with type filter chips (derived from the data, never hardcoded), keyword filter, and a sticky year rail with scrollspy.
- Events timeline: continuous, grouped by year, with milestone and canceled/postponed badges.
- Archived comments: the site's 2011–2019 comment history (407 comments, rescued from Disqus) rendered read-only, with no third-party requests.
- Two-color design system (see DESIGN.md): Barba Red
#CE2406and warm ink on paper; Merriweather + Source Sans 3, self-hosted, SIL OFL; hairline cards, square corners, no shadows. - No third-party assets: no CDN fonts, no icon fonts, no analytics beacons.
Optional KaTeX (math rendering) loads from CDN only on posts containing math, and
switches to a self-hosted copy automatically if a
katex/folder is present in the theme.
- WordPress 6.x+, PHP 8.1+
- Secure Custom Fields (free; provides the repeater fields the publications database uses)
- Optional: Relevanssi for better search
(index
postandpublication)
- Upload
barba-2026/towp-content/themes/and activate. - Copy
mu-plugins/barba-core.phptowp-content/mu-plugins/(create the folder if absent). Verify "Barba Core" appears under Plugins → Must-Use. - Install Secure Custom Fields; import
fields/*.jsonvia SCF → Tools. - Settings → Permalinks → save (flushes rewrite rules for the custom post types).
- Optional: drop a KaTeX release into
barba-2026/katex/to self-host math rendering.
Publications are entered under the Publications menu (title + structured fields);
events under Events (event_date, date_display, and optional badge meta:
milestone / canceled / postponed). Figshare cards are ordinary posts in a
figshare category with a doi field.
Code (theme, plugin, tools): BSD 3-Clause — see LICENSE. Bundled fonts: Merriweather and Source Sans 3, © their authors, under the SIL Open Font License 1.1. Site content at lorenabarba.com: CC BY 4.0 (not part of this repository).