GraV-IT
← All work

2024 · Solo developer

Living Care Lifestyles

For Living Care Lifestyles

A custom WordPress theme for a senior-living organization running four sub-brand sites in a single install — no WordPress Multisite. Per-community headers, navigation, and brand presentation driven by a taxonomy-plus-URL switching mechanism, canonical and SEO fidelity per sub-site, custom maps and floor-plan filtering, and a CRM integration with TalkFurther that lets editorial wire any CTA to the right form via a URL-keyword convention.

Living Care Lifestyles — homepage
Stack
WordPress Advanced Custom Fields FacetWP Tailwind CSS PHP Laravel Mix

The brief

Living Care Lifestyles operates a network of senior living communities across multiple states. Each community has its own brand identity, its own residents and prospects, and its own marketing voice — but they share a parent organization, common admin teams, and a need for visual coherence across the network. The brief was to build four sub-sites in a single WordPress install, without resorting to WordPress Multisite — distinct headers, navigation, and brand presentations per community, while keeping content management, template work, and admin workflow under one roof.

What I built

Four sub-sites, one install, no multisite. A community custom post type acts as the site switcher; a same-named taxonomy tags every page, post, and floor plan to its respective community. A which_site() function determines the active brand on every request in two steps — first by checking the current post’s community term, then by falling back to a URL-segment match against registered community slugs. Header and utility navigation menus are registered per community (header-menu-{slug}, utility-menu-{slug}) so each brand renders its own nav from a shared template. The list of registered communities is cached in a transient that invalidates on publish, so per-request lookups stay cheap.

Canonical and SEO fidelity per sub-site. With four brands sharing one install, canonical URLs and structured data have to behave correctly per community or search engines will collapse the four brands into one. The default WordPress canonical hook is removed in favor of explicit per-section handling; FacetWP queries are scoped to the active community via tax_query so site-specific listings filter correctly without leaking across brands.

TalkFurther CRM integration with URL-variable-driven CTAs. TalkFurther is a CRM and visitor-support platform purpose-built for senior living. The integration is more than a script tag drop. Editorial CTAs across the site use simple hash anchors — #tour, #contact, #apply — and a small client-side handler hijacks the click, preventDefault()s the default jump, and calls TalkFurther’s API with the right form ID for that keyword. A registry (window._furtherKeywordFormMap) maps each keyword to a TalkFurther form ID, so a marketer can drop a “Schedule a Tour” CTA anywhere and trust it to launch the right form without an engineering ticket. The handler prefers TalkFurther’s Visitor Support Agent (the AI/chat surface) when it’s available and falls back to a standard form widget otherwise. A small accessibility shim layers the aria-label and role="button" attributes the third-party chat close button doesn’t ship with by default.

Floor plans, maps, and locations. Floor plans live in their own floor_plan CPT, with lifestyle (independent / assisted) and size (studio / 1-bed / 2-bed) taxonomies. FacetWP drives the filterable grid; cards render from a shared partial. Community maps embed via FacetWP’s map facet (Google Maps under the hood) with init args customized through the facetwp_map_init_args filter. A separate location taxonomy tags content with physical location references for cross-cutting filtering — find every floor plan available at a specific community.

What’s notable about it

The architecture decisions were driven by what the editorial team needed to not have to think about. They don’t have to remember which sub-site they’re editing on — the taxonomy follows the content tree. They don’t have to wire a new CTA to a specific form — the hash-anchor convention does it. They don’t have to worry about search engines collapsing four brands into one — the canonical handling holds. Multi-brand work goes wrong when the architecture forces editors to maintain four parallel realities; this one lets them keep their head in a single content-management surface and the network handles the rest.