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.185.3

A testimonials admin crash has been fixed and uptime monitoring is now tracked in the project [*]

The testimonials admin list has been fixed so it no longer crashes when a testimonial has no linked author. Alongside this, the configuration that defines which services are checked and how alerts are sent has been added to the repository, so future changes to monitoring can be reviewed and tracked the same way as any other change to the project.

Release date: 13.08.2026

Improvements

  • Uptime monitoring :: Added the status page and monitor configuration to the repository for version control

Fixes

  • Publishing 21.47.2 :: Testimonials admin list no longer crashes when a testimonial has no linked author profile

21.185.2

Testimonials with no linked author no longer crash the page they appear on [*]

Release date: 13.08.2026

Fixes

  • Publishing 21.47.1 :: Index cards no longer crash the page when a testimonial has no linked author profile

21.185.1

The server upgrade plan’s cutover phase has had further corrections found during a live rehearsal [*]

Actually running through the cutover phase for real, rather than just reviewing it, turned up three more problems: a database restore step that could fail because of a timing conflict with the live website, a leftover mismatched file name from an earlier fix, and an early setup step that was quietly copying a supporting application’s data to the wrong location. All three have now been corrected in the plan.

Release date: 13.08.2026

Fixes

  • SERVER-UPGRADE.md :: Fixed the final database copy step in the cutover phase, which failed during real testing because another process could recreate one record while the database was being restored — the web server is now stopped for the duration of the restore to prevent that; also corrected a leftover file name so it matches the one already established earlier in the plan
  • SERVER-UPGRADE.md :: Fixed an early setup step that copies the separate governance app’s database folder onto the new server, which was silently nesting the copy one folder too deep instead of placing it where the app actually expects it

Improvements

  • SERVER-UPGRADE.md :: Added a missing step to restart the governance app after its final database copy during cutover, since the running app does not pick up the freshly copied data on its own

21.185.0

The server upgrade plan’s cutover phase has had missing and misordered steps added and fixed [*]

A closer look at the cutover phase, ahead of actually running it, found that two scheduled jobs meant to switch on automatically at go-live were never actually turned on anywhere in the plan, and that the final copy of the live website’s data was missing a step entirely. One existing step also had its timing corrected, since running it too early would have copied data from the wrong server. The way the site is put into maintenance mode during the switch was also replaced with a more reliable method already used elsewhere in the project, after finding the previous method would have left the old server showing a maintenance page if it were ever needed again as a fallback.

Release date: 12.08.2026

New

  • Ariel 14.31.1 :: A new command can clean up leftover personal data from accounts anonymized before the cleanup was automatic

Improvements

  • SERVER-UPGRADE.md :: Added the missing step to turn on the website’s scheduled background tasks and the separate governance app’s data sync once the new server is live, both of which had been deliberately left off until cutover but were never switched back on anywhere in the plan
  • SERVER-UPGRADE.md :: Corrected the timing of turning on the governance app’s data sync, which was scheduled to happen before the new server actually goes live and would have pulled data from the wrong server
  • SERVER-UPGRADE.md :: Added a missing final copy of the website’s database during the cutover window, so that visitor activity between the last full copy and the actual switchover is not lost
  • SERVER-UPGRADE.md :: Replaced the method used to put the site into maintenance mode during the switch with the project’s own established method, and fixed which server it gets switched off on, since maintenance mode was never being switched off on the server that would actually be used if a fallback to the old server were ever needed

21.184.0

The server upgrade plan’s full smoke test has been corrected against real testing on the new server [*]

Running the plan’s full smoke test on the new server, now loaded with real data, surfaced more corrections: instructions that relied on a shortcut that doesn’t actually work for testing multiple subdomains, a checklist item testing the wrong website address, a typo in a country name, and a command option that doesn’t exist. Two open items were also found and noted for follow-up rather than fixed on the spot: the caching tool still isn’t generating cached pages correctly on the new server, and one release script was run for real instead of as a trial run, which turned out fine.

Release date: 12.08.2026

Improvements

  • SERVER-UPGRADE.md :: Corrected the local network shortcut used to test the plan’s checklist, since it does not actually work for testing more than one website address at a time, and split the checklist between what can be tested automatically and what needs a real web browser
  • SERVER-UPGRADE.md :: Corrected a checklist item that was testing the wrong website address — the main site automatically forwards visitors to a different address, which is the one that actually needs checking
  • SERVER-UPGRADE.md :: Fixed a country name typo in the checklist that would have pointed the test at a website address that doesn’t exist
  • SERVER-UPGRADE.md :: Removed a command option from the checklist that doesn’t exist for that particular check
  • SERVER-UPGRADE.md :: Recorded that the caching tool isn’t generating cached pages correctly on the new server, with the troubleshooting steps already tried, as a known issue to resolve before go-live

21.183.0

The server upgrade plan’s pre-launch checks and database migration step have been corrected against real testing on the new server [*]

Running the plan’s pre-launch checks and the actual database migration on the new server surfaced more real problems: a database tool that stopped working after a version upgrade, a checklist step that tested the wrong script, placeholder text in the instructions that could easily be run by mistake, and a database transfer method that turned out not to work reliably. All of these have now been fixed in the plan.

Release date: 12.08.2026

Improvements

  • SERVER-UPGRADE.md :: Fixed the database administration tool, which stopped working after the server upgrade because its security settings hadn’t been updated for the newer version installed on the new server
  • SERVER-UPGRADE.md :: Removed a step that created a separate, temporary database for pre-launch testing, since the real database can be used directly and behaves correctly even before it holds any data
  • SERVER-UPGRADE.md :: Added the missing step to create the website’s database and its dedicated user account, which the plan assumed already existed but did not
  • SERVER-UPGRADE.md :: Corrected a pre-launch checklist item that was testing the wrong script — one meant for publishing new releases rather than the one that actually deploys code on the server
  • SERVER-UPGRADE.md :: Replaced placeholder text for database names, usernames, and passwords throughout the plan with a style that cannot be mistaken for a real value and accidentally run as-is
  • SERVER-UPGRADE.md :: Replaced the direct database transfer method, which turned out to corrupt the data in transit, with a more reliable and considerably faster compress-then-transfer approach
  • SERVER-UPGRADE.md :: Changed every database command in the plan to prompt for its password interactively instead of including it directly on the command line

21.182.0

The server upgrade plan has been corrected against real testing on the new server [*]

Following the server upgrade plan step by step on the actual new and old servers turned up a number of real problems that a document review alone couldn’t have caught — from file transfers that assumed access which didn’t exist, to a security gap in a statistics tool, to an entire step based on a wrong assumption. All of these have now been fixed in the plan.

Release date: 12.08.2026

Improvements

  • SERVER-UPGRADE.md :: Added a step to establish direct access between the old and new servers before any file transfers begin, and rewrote every transfer instruction in the plan to use it, since none of them could have worked as originally written
  • SERVER-UPGRADE.md :: Moved the certificate transfer earlier in the plan, ahead of the web server setup that depends on it, removing a workaround that had been needed to defer a verification step
  • SERVER-UPGRADE.md :: Corrected the file ownership instructions for the website’s application files to match the narrower scheme actually used in production, instead of a much broader one that isn’t appropriate for a git- and Composer-managed deployment
  • SERVER-UPGRADE.md :: Added a missing backup-files folder to the list of files that must be manually transferred
  • SERVER-UPGRADE.md :: Replaced hand-typed intrusion-prevention configuration files with instructions to copy the real working files directly from the old server, after the hand-typed versions failed to load
  • SERVER-UPGRADE.md :: Removed an entire step that turned out to be based on a mistaken assumption — no special permission entry actually needs to be copied for the static cache tool
  • SERVER-UPGRADE.md :: Corrected the certificate renewal tool’s installation method to match how it is actually installed in production
  • SERVER-UPGRADE.md :: Added a note explaining an expected certificate-renewal test failure until the server actually goes live, plus a follow-up check after go-live
  • SERVER-UPGRADE.md :: Corrected a contradiction in the database migration step so it’s clear the main transfer can happen while the site is still live, not only during the final switchover window
  • SERVER-UPGRADE.md :: Added a step to refresh the website statistics data one final time during the actual switchover, which had been missing
  • SERVER-UPGRADE.md :: Fixed a password-protection gap in the website statistics tool, where one of two ways of reaching the same page skipped the password check entirely
  • SERVER-UPGRADE.md :: Removed a duplicated set of instructions for transferring the website statistics configuration
  • SERVER-UPGRADE.md :: Corrected the folder the design system’s website should be installed into, which had been nested one level too deep
  • SERVER-UPGRADE.md :: Added a missing prerequisite needed before installing the Bun runtime
  • SERVER-UPGRADE.md :: Added a step to fix the command-line PHP version defaulting to the wrong release after installing supporting packages
  • SERVER-UPGRADE.md :: Corrected and clarified the governance application’s setup instructions, including a warning that one of its own generated commands could silently overwrite the correct web server configuration if run as printed
  • SERVER-UPGRADE.md :: Filled in placeholder repository web addresses with the real ones

21.181.0

The server upgrade target has moved to Ubuntu 24.04, and the plan now covers a second application on the same server [*]

The server upgrade plan’s target operating system was changed from Ubuntu 22.04 to Ubuntu 24.04 for a longer support window; the PHP target stays at 8.2. The plan was also extended to cover a separate application that lives on the same production server — a governance sync tool unrelated to the main website — which had been missing from the plan entirely.

Release date: 11.08.2026

Improvements

  • SERVER-UPGRADE.md :: Updated the target operating system from Ubuntu 22.04 to Ubuntu 24.04 throughout (title, comparison table, AMI reference, package-list notes)
  • SERVER-UPGRADE.md :: Added coverage for governance.socialimpactaward.net — a separate application hosted on the same server — including its own deployment step, TLS certificate note, cron entry, and pre- and post-cutover checks
  • SERVER-UPGRADE.md :: Added a dedicated cutover step for the governance application’s database, so it is frozen and re-synced immediately before traffic moves to the new server rather than copied once early in the build
  • SERVER-UPGRADE.md :: Corrected a stray reference to an earlier step number left over from adding the governance cutover step

21.180.1

The server upgrade plan now records what was found while checking Phase 0, and a PHP 8.2 export bug was fixed [*]

Working through Phase 0 of the server upgrade plan against the live codebase surfaced a real compatibility bug: the project voting CSV export used a PHP function removed in PHP 8.0, which has now been fixed. The plan itself was also updated with the outcome of each Phase 0 check, so the record reflects what was actually verified rather than what was expected.

Release date: 11.08.2026

Improvements

  • SERVER-UPGRADE.md :: Recorded the outcome of each Phase 0 check (PHP compatibility scan, Composer dry-run, extension/package inventory, firewall/package reconciliation, database sizing) against the live codebase
  • Added a dev-only PHP compatibility scanning tool used to check the codebase against PHP 8.2 ahead of the migration

Fixes

  • Project Voting 13.5.2 :: CSV exports no longer fail on PHP 8.2

21.180.0

The server upgrade plan has been corrected and given a time estimate [*]

The written plan for moving production from Ubuntu 18.04/PHP 7.4 to Ubuntu 22.04/PHP 8.2 has been checked against the live codebase. A factual error in how the scheduled cron task authenticates was corrected, a health check was pointed at the right site, and an estimated timeline was added so the effort involved is clear before work begins.

Release date: 11.08.2026

Improvements

  • SERVER-UPGRADE.md :: Corrected the cron-key note to match how the cron trigger actually authenticates (an existing environment value, not a hardcoded one requiring migration)
  • SERVER-UPGRADE.md :: Fixed the post-migration health check for the Slack presence poller to look at the Play site specifically, since that scheduled task isn’t registered network-wide
  • SERVER-UPGRADE.md :: Added an “Estimated timeline” section summarizing effort per phase and the biggest risks to the estimate


For the full history see the repository changelog.