WordPress & web · homes.parcelCI passing
Parcel: Real Estate WordPress Theme
A fast, accessible block theme for estate agents, with a listings plugin whose search stays quick at 30,000 properties.
View the code Evaluation report Demo tour Run it ›_ last push 1 day ago
4.7 ms vs 704 msmedian property search at 30,000 listings: the index vs meta_query (150x faster)
0 of 450searches where the two returned different listings or order
0axe-core WCAG 2.1 AA violations on 6 page types at desktop and phone widths
demo Demo tour
Screenshots from the running application, with its synthetic demo data. Select one to enlarge.
01 The problem
Real estate themes search listings with meta_query: one join on wp_postmeta per filter and sorting on cast strings. It is fine in a demo and takes over a second per search at tens of thousands of listings, on the busiest page of the site; themes that register their own listing types also lose every listing when the site changes theme.
02 How it works
- Listing saved
- Typed index row
- Search form (GET)
- Indexed query
- Cards and pages
- Structured data
03 What I built
- Parcel, a block theme (theme.json, templates for home, the properties archive and a property page, four patterns, about 30 lines of CSS, no theme JavaScript or web fonts) with every text colour pair at WCAG AA.
- Parcel Listings, a plugin with the property type and facts as registered meta, a typed index table kept in step with every edit (save, fact change, type change, unpublish, trash) and rebuilt by WP-CLI, and a no-JavaScript search with shareable URLs.
- Dynamic blocks for the search, newest listings and facts (previewed with ServerSideRender, no build step) and schema.org RealEstateListing data on every property page.
04 What I learned
Shortcodes inside patterns never rendered: WordPress expands shortcodes in a block template before the patterns inside it, so the search became a dynamic block.
axe-core flagged every page because the Navigation block's no-menu fallback nests a ul directly in a ul; the theme now ships default links.
05 Known limitations
Every repository documents what it doesn't do yet. The main ones:
- No map or radius search yet (coordinates are indexed); one property type per listing in the index.
- A full rebuild takes about 90 seconds for 30,000 listings; SQL edits that bypass WordPress need a reindex.
06 Stack
PHP 8.1WordPressBlock themetheme.jsonMariaDBschema.orgaxe-coreDocker
The repository has the design document, operations runbook, full evaluation report and known limitations. All data is synthetic, generated by code in the repository.
run Run it yourself
Every project runs on a laptop: no cloud account and no paid API needed.
git clone https://github.com/codeROCK-IZZY/real-estate-wordpress-theme.git
cd real-estate-wordpress-theme
docker compose up -d && bash tests/integration/run.sh
php eval/run.php --gate # writes eval/reports/report.html