Block theme for Linköping Studentspex. All content is edited directly on the page using blocks. Productions are managed as their own content type, and the newsletter is built in. The theme requires no additional plugins.
Requirements: WordPress 6.6 or later (tested on 7.1), PHP 7.4 or later.
- Appearance → Themes → Add New Theme → Upload Theme → choose
studentspex.zip→ Install → Activate. - Go to Spexet → Get started and click Create all. This creates:
- the pages Home, Next show, Search the show, About the show, Contact and News
- the main menu
- the homepage and posts page
- next year's production (as a draft), selected as current
- if checked: the 47 previous productions from 1981–2026, with title, year and description
- Spexet → Settings: add the link to the application form, check social media and ticket email settings, and enter a sender address for the newsletter. Use an address on your own domain.
- Recommended: install an SMTP plugin, such as WP Mail SMTP, so the confirmation emails do not end up in spam.
| What | Where |
|---|---|
| Text, headings, cards, groups, questions, contacts, direction | Directly on the page (Pages → select page). Each section is a block. |
| Next production: title, date, prices, ticket link, synopsis, poster, cover image, this year's Lisse | Productions → current production → panels in the right sidebar |
| Which production is current | Spexet → Settings |
| Sponsors ("Thanks to"), footer, header, logo | Appearance → Editor → Patterns → Footer / Header |
| Menu | Appearance → Editor → Navigation |
| Colors and fonts | Appearance → Editor → Styles |
| News | Posts, just like usual |
| Subscribers | Spexet → Newsletter |
The Studentspex blocks are available in the block selector under the Studentspex category. Ready-made full pages are available under Patterns → Studentspex – full pages.
- Productions → Add new: enter the title, year, subtitle, synopsis, dates and prices.
- Add images:
- Cover image: landscape, at least 2000 px wide. It is shown behind the homepage hero.
- This year's Lisse: PNG with transparent background. Replaces the default Lisse.
- Poster.
- Spexet → Settings → Next production: select the new production. Last year's production moves automatically to Old productions.
- When tickets are released: fill in Link to ticket purchase. The "Buy tickets" button is then activated.
- Subscription: the visitor enters their address and checks consent. A confirmation email is sent, and the address is only added when the link in the email is clicked (double opt-in).
- Maintenance: unconfirmed sign-ups are deleted after 30 days.
- Personal data: export and deletion of a person's data works via Tools → Export/Delete Personal Data. A suggested privacy text is available under Settings → Privacy.
- Dispatch: Spexet → Newsletter → Export confirmed (CSV). Send the email as a mass mailing (recipients as BCC) or via a mail merge. Include each recipient's
unsubscribe_urlin the email. - Abuse protection: nonce, a hidden honeypot field, and a maximum of 5 attempts per 10 minutes and IP address. The limit can be changed with the filter
studentspex_nl_rate_limit.
The block source code is in src/ (not included in the zip file).
npm install
npm run build # src/ → build/
npm run start # rebuilds on changes
npm run lint:js
npm run zip # creates ../dist/studentspex.zip
PHP follows WordPress Coding Standards (.phpcs.xml.dist). Run phpcs with WPCS 3 installed.
- Patterns and pages: the patterns in
patterns/are written in PHP using the helper functions ininc/pattern-helpers.php. This gives the exact same block markup as the editor saves. - Block definitions: all blocks are dynamic (
render.php).block.jsonis generated fromtools/blocks.spec.mjswithnode tools/gen-block-json.mjs. - Translation: the theme text is written in Swedish and prepared for translation (text domain
studentspex).