Write to me

Work / Custom build

One plugin behind Hamburg's Sozialraum district sites

One documented plugin that runs the professionals' network on Hamburg's Sozialraum sites: verified sign-up, lists, feedback and newsletters, shared by every district.

What they needed

Hamburg’s districts run Sozialraum websites: directories of local social services for children, young people and families, funded by the city and the district offices. Four exist so far, Altona, Wandsbek, Hamburg-Nord and Bergedorf, with one design and structure, and more are planned.

Beside the public directory, each site has a network for professionals in social work. Members sign up and get verified, keep lists of offers and facilities, send feedback and receive newsletters. I had first written that logic as snippets in Toolset’s custom code panel, site by site. With more districts coming, we turned it into one plugin every site can share.

What I built

One plugin, Sozialraum Helper:

  • Sign-up for professionals. A form checked by Friendly Captcha, email verification with a one-time link, and a status that moves from unverified to requested to confirmed. Confirmed members get their role, and the network admin is told. Applicants who never verify are removed after seven days.
  • Feedback threads with a status per thread (open, waiting for a reply, closed); every reply emails the other side.
  • Lists members build of offers and facilities.
  • Newsletters: opt-in through the Newsletter plugin’s API, and mailings to all members.
  • District filters: each region page opens the directory filtered to its neighborhoods.

One plugin, several sites

Everything that differs between sites lives in one settings screen: form and view IDs, regions, sender, email templates and keys. Settings move between sites, and between staging and production, as a JSON export. A fresh install does nothing until it is configured, so adding a district never puts the running ones at risk.

Why it matters

Each new district site gets the same documented behavior from one codebase that follows the WordPress Coding Standards, instead of another copy of the snippets.