SIA Publishing and Play

SIA Publishing and Play is the WordPress codebase powering the Social Impact Award network. It runs as a WordPress multisite — one installation hosting a central hub and a separate site for each country team — and is organized around two units.

Publishing covers the editorial and public-facing layer: articles, events, press mentions, resources, and project listings produced by country programme managers through a shared workflow. A layout engine and contact form system underpin the sites, and a glossary links recognized terms into content automatically.

Play is the network’s internal knowledge base — a restricted-access platform for team members and candidates, with layered access control based on community role, team membership, and organization status. It also serves as the home of member profiles, country teams, partner organizations, and the competition voting system.

Connecting everything is a suite of integration and infrastructure plugins that handle data synchronization with Airtable and the Application & Assessment Platform, Slack membership and activity tracking, environment management, user permissions, and performance caching across the network.

Front end. The sites are rendered entirely through an in-house design system built on Fractal, with Twig as the templating language and Gulp as the build tool. WordPress’s native template hierarchy is not used. Instead, Timber bridges WordPress and Twig, passing structured data contexts to design system components. The design system lives in a separate repository and is included here as a library.


Plugins


Recent changes

21.112.1

Design system docs mirror now skips the full build pipeline [*]

Release date: 13.03.2026

Improvements

  • Run only the Fractal library build in .bin/mirror-docs.sh instead of the full build pipeline, skipping unnecessary style, script, and image compilation

21.112.0

Documentation changes are now mirrored to the design system automatically [*]

A new script handles the full docs-mirror workflow in one step: it rewrites all design system mirror files from their canonical sources in this repository, runs the library build, and commits and pushes the result inside the submodule. Running the script before committing the main repo means the submodule pointer advance is always bundled with the change that caused it, preventing the documentation loop where mirroring triggered a new entry which triggered another mirror.

Release date: 13.03.2026

New

  • Add .bin/mirror-docs.sh to automate the design system docs mirror: rewrites all mirror files, runs the library build, commits, and pushes the submodule in one step
  • Integrate .bin/mirror-docs.sh into .bin/deploy.sh step 2 so the docs mirror and submodule pointer advance are always included in the tagged release commit
  • Add pre-flight clean checks to .bin/deploy.sh for both the main repo and the design system submodule, halting before parameter validation if either has uncommitted changes
  • Update .bin/deploy.sh header to accurately document all steps; replace Bitbucket reference with origin
  • Align .bin/deploy.sh output style with .bin/latest.sh: coloured block on the left, text after it

21.111.2

Presence tracking no longer loads profile data from Play unnecessarily [*]

Release date: 11.03.2026

Fixes

  • Ariel 14.2.2 :: Presence tracking no longer loads profile data from Play unnecessarily

21.111.1

Presence cron scheduling now runs once on upgrade rather than on every admin request [*]

Release date: 11.03.2026

Fixes

  • Ariel 14.2.1 :: Presence cron scheduling now runs once on upgrade rather than on every admin request

21.111.0

Bot members are tracked in the presence table and membership events now update last-seen dates [*]

Slack bots were previously forwarded to the IT Infrastructure report but not recorded in the local presence table. They are now stored there directly. When any member joins the workspace or updates their profile, the system also records today as their last-seen date — a step that was previously skipped for these events.

Release date: 11.03.2026

New

  • Ariel 14.2.0 :: Bot users tracked in presence table and membership events record last-seen date

Fixes

  • Ariel 14.2.0 :: Reschedule the nightly presence poller on every upgrade check so the cron event self-heals if it is ever missing

21.110.0

Documentation reorganised and mirrored into the design system [*]

The API reference has been split into separate REST API and WP-CLI documents. PHP 7.x installation instructions have been removed from the getting-started guide. The Mintlify submodule has been removed. All project documentation is now mirrored into the design system’s Fractal library, with each plugin getting its own overview and changelog pages.

Release date: 10.03.2026

Improvements

  • Split API.md into API.md (REST API and WordPress hooks) and WP-CLI.md (WP-CLI commands); update README.md to link to both
  • Remove PHP 7.x installation instructions from GETTING-STARTED.md; update config paths to PHP 8.1
  • Remove the website-docs Mintlify submodule
  • Mirror all project docs into web/libraries/custom/sia-design-system/docs/publishing-and-play/: index, getting-started, REST API, WP-CLI, and per-plugin overview and changelog pages for all ten sia-* plugins
  • Document the design system sync convention in CLAUDE.md; add rule for tracking component library releases in the project changelog
  • Design System 2.75.0 :: Docs restructured and homepage updated [*]

21.109.0

Every changelog entry now shows its release date [*]

All 476 existing entries have been updated with a release date in dd.mm.yyyy format. The date appears after the description paragraph where one exists, or directly after the title for shorter entries. The project guidelines have been updated to require this line on every future entry too.

Release date: 10.03.2026

Improvements

  • Add _Release date: dd.mm.yyyy_ to all 476 existing changelog entries, sourced from git tags and commit history
  • Document the release date line as a required field in CLAUDE.md

21.108.0

Project documentation added to the repository [*]

The repository now has a project-level README describing what SIA Publishing and Play is, how it is structured, and how the front end is rendered. Technical setup instructions have been moved to a dedicated getting-started guide, and the full REST and WP-CLI API surface is documented in two new reference files.

Release date: 06.03.2026

New

  • Add README.md project summary covering the two units, the multisite structure, the integration layer, and the Fractal/Timber/Twig front-end architecture
  • Add GETTING-STARTED.md with PHP installation and New Relic monitoring setup, extracted from the previous README
  • Add API.md with a full reference for all REST endpoints, WP-CLI commands, and WordPress hooks across the custom plugins
  • Add openapi.yml with an OpenAPI 3.0.3 specification for all REST endpoints

21.107.0

All plugin READMEs now include descriptions [*]

Each plugin’s README now opens with a plain-language description of what the plugin does and why it exists. Plugins with rich functionality use sub-headings to describe their main features; simpler plugins use a short bullet list. Three plugins that had no README received one. Changelog entries were backfilled from the main log and git history where the plugin’s own README had none.

Release date: 05.03.2026

Improvements

  • Add descriptions and main feature sections to all 14 tracked plugin READMEs
  • Create README files for sia-projects, m-announcements, and m-wsl-multisite-adapter
  • Backfill sia-projects changelog from the main log (8 entries, back to 3.4.0)
  • Backfill m-announcements changelog from the main log and git history (2 entries, back to 1.3.0)
  • Standardise version headings across all plugin READMEs to level 3, correctly nested under the level 2 Changelog heading

21.106.0

Cached profile and team data is now smaller and more reliably refreshed [*]

The application caches profiles, teams, and organisations to avoid repeated database queries on every page load. This release significantly reduces the size of those caches and ensures they are always cleared when content changes — including when an organisation is edited in the admin area, which previously left stale data in place.

Release date: 05.03.2026

New

  • Start tracking new .claude folder created now to allow "Bash(wp eval ':*)" permission

Improvements

  • Profiles 16.3.0 :: Reduce cached object size and fix missing organisation cache invalidation [*]
  • Ariel 14.1.0 :: Slim cached ventures and add a cache-warming CLI command [*]

Fixes

  • Ariel 14.1.0 :: Include last_seen_date and last_seen_source in the ITI webhook payload when processing team_join and user_change events


For the full history see the repository changelog.