As well as enjoying them with a cup of tea, we like using cookies on our website to allow us to remember who you are and show you things we think you’d like. For more information about how we use cookies, you can find out more in our privacy policy.

Sorry, Internet Explorer is no longer supported.

To visit Framework Design please donwload the lastest version of either Google Chrome, Firefox or Safari for the best experiece.

A illustrated dog-man sits in a fiery room with an expression like everything is fine although it is not fine

How We Built The FA Women’s Leagues Site With WordPress, Laravel and Opta

womens fa website

How We Built The FA Women’s Leagues Site With WordPress, Laravel and Opta

Paul

Paul

When you’re asked by one of the biggest football associations in the world to build something new, your answer is “yes” — and then you get to work figuring out how to make it sing.

That’s what happened to us at Framework. After a successful project with The FA on a smaller build, we were approached to take on a much bigger challenge: building the FA Women’s Leagues and Competitions website. A modern, content-rich experience powered by live data, dynamic stats, and regular editorial updates.

It needed to showcase everything from full-time match stats to league standings and player info — all fed by the ever-evolving firehose of data coming from Opta.

In this post, I’ll walk through how we designed a hybrid architecture using WordPress and Laravel to make that happen, share some of the technical decisions we made (and why), and talk about how we delivered a live matchday experience that stands up to millions of hits.


Starting With Content, Scaling With Data

Like many editorial sites, WordPress was the natural starting point. It’s great for teams working on copy, stories, and featured content. Using Advanced Custom Fields (ACF), we built a flexible structure to accommodate custom post types for:

  • Fixtures & Results

  • League Cup fixtures

  • Players

  • Clubs

  • Coaches

These types formed the editorial backbone of the site.

But most of the heavy lifting — Leagues, Standings, Live Fixtures, Player Stats, Match Events — would be handled by Opta, which provides rich structured data for both domestic and international women’s football.

And this is where Laravel came in.


Laravel: The Engine Behind the Stats

We built a standalone Laravel application that acts as the middleware between Opta’s data and the WordPress frontend. Think of it as the brain quietly pulling the strings behind the scenes.

This Laravel system:

  • Pulls and syncs data from Opta via API

  • Checks for changes in players, fixtures, standings, etc.

  • Updates WordPress by pushing the latest info through a custom API

  • Provides a JSON feed for real-time data on live fixtures

For example, when a match finishes, the Laravel app updates the standings and player stats. If a player transfers or changes shirt number, it pushes the update through to WordPress. It’s efficient, event-driven, and scalable.


Real-Time Matchdays: Goals, Cards, Substitutions & More

One of the most fun features to build — and one the fans really love — is the live fixture view. During live match weekends, you can head to the fixtures page and see it all:

  • 🥅 Goals

  • 🟨 Yellow cards

  • 🔁 Substitutions

  • ⏱️ Extra Time & Penalties (for Cup games)

Here’s a quick snapshot of a recently finished fixture:

To deliver this data live, we opted for polling rather than pushing via websockets. Why?

  1. Simplicity: No need to maintain open connections or complex event-driven architecture.

  2. Scalability: We cache the JSON feed and serve it via a CDN, which means we’re not hammering the Laravel app with millions of requests.

Whenever a live update comes in from Opta, our Laravel app refreshes the cache, and the next polling request gets the latest info. It’s smooth, fast, and resilient — especially when traffic spikes during big matches.


Lessons Learned & What’s Next

This hybrid WordPress–Laravel setup gave us the best of both worlds: editorial control and live data power.

Some takeaways:

  • Separate concerns: Keep WordPress for content, Laravel for logic and data.

  • Sync smart: Don’t fetch everything every time. Only sync changed data.

  • Cache aggressively: Your live JSON route will get hammered — make sure it’s ready.

  • Design with live in mind: Live matches are the busiest moment — test, profile, and optimize accordingly.

This project was a blast to build and has since helped us land similar work with other sports clients across the globe. It’s proof that with the right architecture and a collaborative approach, you can build fast, reliable, and user-friendly experiences — even on top of high-frequency sports data.


If you’re working on a similar project or have questions about how we approached specific challenges, get in touch — we love geeking out about this stuff.

The FA Women’s Leagues and Competitions

View
A yellow background with 'vs' in black outline in the centre

James -

Battle of the Javascript Frameworks: React vs Vue.

View

Christian -

Five Signs Your Website Is In Need Of An Update.

View
Headless Blog Header Image

Christian -

Is Headless right for your next website?

View