WordPress / Custom theme / Performance optimisation / SEO / Copywriting / Design
Australian Music Teachers Register
A national music-teacher directory, engineered into a connected WordPress platform for discovery, membership and growth.
Visit website
The project
A directory on the surface. A platform underneath.
Finding a music teacher should feel simple. Making that simplicity work across locations, lesson formats, membership tiers and thousands of profiles takes much more than a directory plugin.
Our work with the Australian Music Teachers Register spans design, copywriting, SEO, a custom WordPress theme and extensive development around Directories Pro and Ultimate Member. We connected search, subscriptions, enquiries and member administration into a coherent platform, then examined the database queries and resource loading beneath it.
During our partnership, membership grew from around 100 to more than 2,000. The engineering below describes how the platform works; the recorded query comparisons measure specific operations within that wider work.
01 / Discovery
A better match starts below the search box.
Instrument. Lesson format. Location. Distance. A small set of controls conceals a carefully defined search system.
We built geographic discovery around canonical Australian localities and the directory’s own published teaching relationships. Nearby results come from candidate filtering and exact distance calculations, with online teaching treated independently. The interface preserves the search context when visitors return from a profile.

From a place name to a relevant teacher.
Resolve the location
Match suburb, state and postcode to a canonical locality and its accepted coordinates, with source provenance.
Narrow the candidates
Use an indexed bounding rectangle, adjusting longitude for latitude, before calculating distance.
Calculate proximity
Apply Haversine distance to the candidate set and enforce the selected radius across relevant listing locations.
Apply the rules
Respect published teaching relationships, membership priority and distance bands, while preserving a stable random seed.
Distances are calculated between locality coordinates. They represent geographic proximity, not street-address accuracy or driving time.
02 / Targeted performance
Make the database do less work.
Performance work begins with the operation that is actually expensive. We examined lookup shapes, relationship tables and index column order, then introduced targeted composite indexes for the geographic and directory search paths.
These recorded V7 development comparisons show the effect on two representative operations.
Geographic candidate lookup
Moss Vale, 40 km radius: bounding-box query path.
- Before the indexed path
- 25.3 ms
- With the indexed path
- 1.2 ms
Teaching relationship lookup
Suburb + Teaching query across 77 relationships.
- Without the targeted index
- 101 ms
- With the targeted index
- 2 ms
Approximate elapsed query times recorded in the V7 development decision log. These are historical comparisons, not new production benchmarks, percentile measurements or whole-page load times. Each chart uses its own scale. The locality index is a composite database index; exact radius filtering still follows the candidate lookup.
03 / Platform architecture
One decision. Consistent behaviour everywhere.
A member account, a directory listing and a paid subscription describe different things. Treating them as interchangeable creates the kind of edge cases that surface as support requests.
We built a shared entitlement decision around the listing, its plan and its linked subscription. The same result governs access and presentation across the platform, including renewal and replacement-subscription scenarios.
Member identity
The account and the person who owns the listing.
Directory plan
The listing, its assigned plan and the capabilities that plan enables.
Subscription state
The linked product, owner, current status and relevant end date.
- Visibility and feature limits
- Enquiries and private notes
- Search priority and reporting
- Campaign audience eligibility
04 / The human experience
The complexity stays behind the experience.
The public profile gives prospective students a clear path from discovery to an enquiry. Behind that interaction, the server checks the listing owner, its current membership tier and the permitted workflow.
Member inbox access, Premium notes and notification behaviour all follow those checks. An identifier submitted in a form is context to validate, never permission to trust. This is where careful plugin integration becomes a better everyday product.

05 / Engineering detail
The work you don’t see. The difference you feel.
The platform combines a custom theme with carefully scoped plugin extensions and operational tooling. The aim is to keep existing systems authoritative, make dependencies explicit and give future changes somewhere sensible to live.
Load resources for the job the page is doing.
We analysed asset loading by page capability, including search, listing details, member forms and discovery results. Conditional loading is only effective when dependency declarations agree: retained Ultimate Member scripts must not silently bring removed widgets back into the page.
The recorded shared JavaScript file is 7,339 bytes on disk, supported by six conditional module families. That is a source-file measurement, not a claim about total JavaScript or compressed transfer size. Image derivatives are sized for their use, while selected embedded media waits until it is needed.
The same principle extends to the document head: derive search metadata from the relevant taxonomy data instead of executing a full directory shortcode just to discover a title.
Extend the plugins without editing their vendor files.
Directories Pro, Ultimate Member and subscriptions each retain a defined role. Custom logic connects them through native hooks and APIs, keeping billing history and listing relationships intact.
A terminated old subscription must not revoke a valid replacement. Listing ownership and one-listing permissions are checked on the server. These are explicit rules with transition checks, rather than assumptions buried in template conditions.
Broad asset pruning for logged-in flows remains opt-in where wider compatibility needs verification. Performance changes should earn their place without breaking account management.
Treat every enquiry as a permissioned workflow.
Gravity Forms transports the enquiry; server-side logic validates its listing context, owner and current tier. Invalid context fails closed. Free and Premium membership receive distinct notifications, while the owner-authorised inbox and Premium notes enforce their own access checks.
Protected email reveal uses a short-lived signed token, rate controls and uncached responses to add harvesting friction. It is not presented as encryption or a guarantee against determined scraping.
Analytics distinguish impressions from views. A visibility threshold, dwell time, batching and deduplication make the event definitions deliberate; they do not turn an impression count into a count of unique people.
Make communications resumable and eligibility current.
Campaigns use separate campaign, recipient and delivery records, with small scheduled batches and explicit rate limits. Eligibility and the destination address are rechecked at send time, rather than trusting a stale export.
Claim recovery and retries allow interrupted work to resume. The design acknowledges the boundary between a message accepted for sending and one delivered to an inbox; it does not promise exactly-once delivery.
Move data with checks, not crossed fingers.
The location migration preserves canonical identities and relationships across WordPress and Directories Pro. Stable references replace assumptions about local database IDs.
Preview evidence and source hashes detect drift before a write. Bounded, resumable batches make progress inspectable, and verification covers both relationship stores. The process was designed around preserving the meaning of existing data, not merely completing an import.
Keep editorial control separate from business logic.
An ACF-backed editorial registry gives the site team control of supported messages without moving membership rules into editable copy. Validated placeholders, escaped output and code fallbacks keep that boundary clear.
The registry avoids autoloading its full content on every request, and deploying new defaults does not overwrite existing editorial choices. Maintainability is part of performance: the next change should be understandable as well as fast.
Based on the AMTR V7 implementation and release notes through September 2026.
Built to perform. Engineered to last.
Has your platform outgrown its defaults?
Complex WordPress work is our territory. We help businesses, agencies and designers turn ambitious requirements into coherent, maintainable websites — from a design concept to the systems behind it.
Enjin optimised our complex site to handle high traffic seamlessly and delivered outstanding SEO results. Such a great team to work with.