WordPress and Laravel Web Site Build
MyEd approached us with a challenge – to take over their existing WordPress web site, and in the process achieve several key goals:
- Improve the design and performance,
- Allow visitors to submit detailed survey reviews,
- Calculate weighted review scores,
- Allow Nurseries, Schools, Colleges and Universities to manage their listings,
- Monetise listing management,
- Collate data from numerous educational sources, to build a comprehensive, searchable database of all Institutions and Courses in England.
We designed and built a new WordPress Web Site, comprising of a bespoke Theme and Plugin.
The Theme provides the presentation and design, whilst the Plugin adds key functionality to the WordPress build:
- Account Registration, Login, Reset Passwords with member’s area
- Advanced Custom Fields integration for Institutions, storing education metrics such as Ofsted reports, Key Stage performance, number of students etc
- Realtime search functionality for Institution names
- Comparison System, allowing parents and students to compare two or more Institutions or Courses
- Google DFP Ad Units
- HubSpot CRM integration
- Custom Post Types and Taxonomies
- Payment Processing
Collecting and presenting survey information from parents and students is critical to MyEd, in allowing people to make informed decisions on which Nursery, School, College or University to attend next. Whilst many responses are given by site visitors, MyEd also works with multiple survey panels to drive participants straight to the review system.
We chose Gravity Forms, to allow MyEd to easily create complex, multi page forms. Its functionality was extended to:
- Add a weighting field to every question and section.
- Add advanced fields to search for Institutions and Courses, linked to the Institutions and Courses on the MyEd web site.
- Aggregate all quantitative answers for a given question, to provide a breakdown by answer (both as a number and percentage).
- Calculate the overall score for an Institution, based on the section and question weightings.
- Calculate the overall score for a section, based on the question weightings.
- For participants originating from a survey panel, ensuring they are sent back to the survey panel web site on completion or exit of the survey.
With the above custom functionality, MyEd can provide an immediate score for any Institution or Course, as well as a detailed breakdown by section and question.
Having carefully researched several e-commerce solutions and membership solutions for WordPress, we produced a small, custom checkout process as a Plugin, covering:
- Packages: MyEd can define different packages with different capabilities
- Checkout: Institutions can pay to upgrade to a Package, via credit card, debit card, direct debit or bank transfer (Stripe, GoCardless)
- Renewals: Packages are automatically renewed
- Invoicing: As some Institutions require a PO to make a payment, we integrated with FreeAgent to automatically raise an invoice when an Institution chose to pay via Bank Transfer.
MyEd’s data is collated from 12 different educational data sources, including the DfE, gov.uk, Ofsted, HESA and others. Depending on the provider, data is supplied in JSON, PDF, XLS, CSV, ODS and HTML format, updated at different times of the year.
With each data provider having a different data structure, we built a Laravel application to:
- Import data from the 12 data providers,
- Extract the key data required from each (parsing JSON, PDF, XLS, CSV, ODS and HTML)
- Build a relational MySQL database of Institutions, each with associated performance data, metrics, staff data etc.
- Provide a read only, token based API which the main MyEd WordPress web site can use to import and display data
This approach again separates design and functionality; should the main MyEd web site platform change, our data source microservice as an API ensures we can supply data to any system. Furthermore, this also allows for third parties to use our structured data for various open data projects.
With a data sources system supplying over 50,000 Institutions and 25,000 University Courses, plus over 15 million pieces of metadata, the final phase of the build turned to performance optimization within WordPress, ensuring that WordPress can store, handle and search all of this data from the API without performance issues.
We achieved this with several techniques:
- Removing Custom Fields from the WordPress Administration interface. With 15 million+ pieces of metadata, select dropdowns and searches would be extremely slow, affecting the performance of the whole UI. As this data isn’t editable, we removed the ability to edit it in the Administration interface.
- Storing Data Effectively. We leveraged WordPress’ taxonomy system to store searchable / filterable data.
- Optimising Database Queries. WP_Query calls were optimised not to refresh term and post meta caches on longer queries.
- Server Optimization. Ensuring that all static assets are cached with long expiration dates.
- WP Super Cache. Configuration of WP Super Cache to serve static HTML files of Institution pages, refreshed daily.