Files
homeproz/contract/Contracts/WordPress-Website/_scratch/site_analysis/IMPLEMENTATION-PLAN.md
T
Hanson.xyz Dev 5b629bdbab Update design docs with RHR competitor structural changes
DESIGN-DOCUMENT.md v1.1:
- Expanded site architecture with Communities and Resources sections
- Updated navigation: Properties | Communities | About | Resources | Contact
- Hero now includes location search dropdown
- Added Service Cards section (Buy/Rent/Sell)
- Separated Residential and Commercial listings on homepage
- Property archive now includes map view (split layout)
- Added Community page template specs
- Added Resources page template specs
- Enhanced footer with office hours, pro logos, license numbers

IMPLEMENTATION-PLAN.md v1.6:
- Added Phase 8: RHR Structural Enhancements
- New templates: page-communities.php, page-resources.php, template-community.php, template-resource.php
- ACF field specs for community and resource pages
- Linked beads issues for tracking
2025-11-30 02:29:02 -06:00

31 KiB
Executable File

HomeProz WordPress Website Implementation Plan

Draft v1.0 - For Review


1. Executive Summary

This document outlines the implementation approach for building the HomeProz WordPress website. The project will deliver a custom WordPress theme with Advanced Custom Fields (ACF) integration for property management, following modern WordPress development best practices.

Estimated Development Time: 40 hours (as per contract) Approach: Custom theme development with ACF Pro for property listings


2. Technology Stack

2.1 Core Platform

Component Technology Version
CMS WordPress 6.x (latest stable)
PHP PHP 8.1+
Database MySQL/MariaDB 8.0+ / 10.6+
Web Server Nginx or Apache Latest

2.2 Theme Development

Component Technology Notes
Base Theme Custom theme from scratch No parent theme dependency
CSS Modern CSS with CSS Variables No preprocessor needed
JavaScript Vanilla JS + Alpine.js Lightweight interactivity
Build Tools None required Keep it simple
Block Editor Full support theme.json configuration

2.3 Required Plugins

Plugin Purpose License
Advanced Custom Fields Pro Property fields & flexible content Paid ($49/yr)
Contact Form 7 or WPForms Lite Contact forms Free
Yoast SEO or Rank Math SEO management Free
WP Super Cache or LiteSpeed Cache Caching Free
Wordfence or Sucuri Security Free tier
UpdraftPlus Backups Free

2.4 Optional/Recommended Plugins

Plugin Purpose When to Add
Imagify or ShortPixel Image optimization At launch
Redirection URL redirects If migrating
Google Site Kit Analytics integration Post-launch

3. Project Structure

3.1 Theme File Structure

themes/homeproz/
├── assets/
│   ├── css/
│   │   ├── style.css           # Main compiled styles
│   │   ├── editor-style.css    # Block editor styles
│   │   └── components/
│   │       ├── buttons.css
│   │       ├── cards.css
│   │       ├── forms.css
│   │       └── navigation.css
│   ├── js/
│   │   ├── main.js             # Main scripts
│   │   ├── navigation.js       # Mobile menu
│   │   └── property-filter.js  # AJAX filtering
│   ├── images/
│   │   ├── logo.svg
│   │   └── placeholder.jpg
│   └── fonts/                  # If self-hosting
│
├── inc/
│   ├── acf-fields.php          # ACF field group definitions
│   ├── custom-post-types.php   # Property CPT registration
│   ├── enqueue.php             # Script/style enqueuing
│   ├── theme-setup.php         # Theme supports, menus, etc.
│   ├── template-functions.php  # Helper functions
│   ├── block-patterns.php      # Custom block patterns
│   └── customizer.php          # Theme options (if needed)
│
├── template-parts/
│   ├── header/
│   │   ├── site-header.php
│   │   └── navigation.php
│   ├── footer/
│   │   ├── site-footer.php
│   │   └── footer-widgets.php
│   ├── content/
│   │   ├── content-page.php
│   │   ├── content-post.php
│   │   └── content-none.php
│   ├── property/
│   │   ├── property-card.php
│   │   ├── property-gallery.php
│   │   ├── property-details.php
│   │   ├── property-filters.php
│   │   └── property-agent.php
│   ├── components/
│   │   ├── agent-card.php
│   │   ├── testimonial.php
│   │   ├── cta-section.php
│   │   └── hero-section.php
│   └── blocks/                 # Custom block templates
│
├── patterns/                   # Block patterns (WP 6.0+)
│   ├── hero-cta.php
│   ├── feature-grid.php
│   └── team-grid.php
│
├── templates/                  # Full Site Editing templates (optional)
│
├── 404.php
├── archive.php
├── archive-property.php
├── footer.php
├── front-page.php
├── functions.php
├── header.php
├── index.php
├── page.php
├── page-about.php
├── page-contact.php
├── page-communities.php        # Communities landing page (NEW)
├── page-resources.php          # Resources landing page (NEW)
├── search.php
├── single.php
├── single-property.php
├── sidebar.php
├── template-full-width.php
├── template-landing.php
├── template-blank.php
├── template-community.php      # Individual community page (NEW)
├── template-resource.php       # Individual resource page (NEW)
├── screenshot.png
├── style.css
└── theme.json                  # Block editor config

3.2 ACF Field Structure

Property Fields Group

Property Details
├── Basic Information
│   ├── property_status (select: Active, Pending, Sold)
│   ├── property_type (select: Residential, Commercial, Land, Multi-Family)
│   ├── price (number)
│   ├── price_display (text) - for "Call for Price" etc.
│   └── mls_number (text)
│
├── Address
│   ├── street_address (text)
│   ├── city (text)
│   ├── state (text, default: MN)
│   ├── zip_code (text)
│   └── google_maps_embed (textarea) - or use lat/lng
│
├── Property Specs
│   ├── bedrooms (number)
│   ├── bathrooms (number)
│   ├── square_feet (number)
│   ├── lot_size (text)
│   ├── year_built (number)
│   └── garage (select: None, 1-car, 2-car, 3+car)
│
├── Media
│   ├── featured_image (uses WP featured image)
│   ├── gallery (gallery field)
│   └── virtual_tour_url (url) - optional
│
├── Description
│   ├── short_description (textarea) - for cards
│   └── full_description (wysiwyg)
│
├── Features & Amenities
│   └── features (checkbox or repeater)
│
└── Agent Assignment
    └── listing_agent (post object -> Agent CPT or user select)

Agent/Team Member Fields

Agent Details
├── agent_title (text) - "REALTOR®"
├── agent_phone (text)
├── agent_email (email)
├── agent_bio (wysiwyg)
├── agent_photo (image)
└── agent_social (repeater: platform, url)

Testimonials Fields

Testimonial Details
├── testimonial_text (textarea)
├── client_name (text)
├── client_location (text)
├── transaction_type (select: Buyer, Seller, Both)
└── rating (number 1-5) - optional

4. Implementation Phases

Phase 1: Foundation (Day 1-2)

Estimated: 8 hours

  • Set up local development environment
  • Create theme folder structure
  • Set up functions.php with includes
  • Configure theme.json for block editor
  • Create style.css with CSS variables (colors, typography)
  • Build header.php with navigation
  • Build footer.php with widgets areas
  • Create basic index.php, page.php
  • Register menus (Primary, Footer)
  • Set up theme supports (thumbnails, title-tag, etc.)

Deliverable: Basic theme framework with header/footer

Phase 2: Property System (Day 3-4)

Estimated: 10 hours

  • Register Property custom post type
  • Install and configure ACF Pro
  • Create Property field groups
  • Build archive-property.php (listings page)
  • Build single-property.php (detail page)
  • Create property-card.php template part
  • Create property-gallery.php template part
  • Create property-filters.php template part
  • Implement AJAX filtering (property-filter.js)
  • Add property status badges
  • Test property CRUD in admin

Deliverable: Fully functional property listing system

Phase 3: Page Templates (Day 4-5)

Estimated: 8 hours

  • Build front-page.php (homepage sections)
  • Build page-about.php (about/team page)
  • Build page-contact.php (contact page)
  • Build archive.php (blog listing)
  • Build single.php (blog post)
  • Create template-full-width.php
  • Create template-landing.php
  • Build 404.php
  • Build search.php
  • Create reusable template parts:
    • Hero section
    • CTA section
    • Testimonial component
    • Agent card component
    • Post card component
    • Sidebar widgets
  • Set up Contact Form 7 / form plugin

Deliverable: All page templates functional (including blog)

Phase 4: Block Patterns & Polish (Day 5-6)

Estimated: 6 hours

  • Create block patterns:
    • Hero with CTA
    • Feature grid (3-col)
    • Team grid
    • Testimonial
    • Split content
    • CTA banner
  • Add editor styles (editor-style.css)
  • Ensure block editor matches frontend
  • Add responsive styles (mobile, tablet)
  • Implement animations/transitions
  • Cross-browser testing

Deliverable: Polished theme with reusable patterns

Phase 5: Content & SEO (Day 6-7)

Estimated: 4 hours

  • Install and configure Yoast/Rank Math
  • Add Schema.org markup:
    • RealEstateAgent
    • RealEstateListing
    • LocalBusiness
  • Set up XML sitemap
  • Configure Open Graph meta tags
  • Add favicon and touch icons
  • Enter initial content:
    • Homepage content
    • About page content
    • Contact info
    • Sample properties (for testing)
  • Add team member data

Deliverable: SEO-ready site with initial content

Phase 6: Performance & Security (Day 7)

Estimated: 2 hours

  • Install caching plugin
  • Configure image optimization
  • Enable GZIP compression
  • Set up lazy loading
  • Install security plugin
  • Configure SSL/HTTPS
  • Set up automated backups
  • Run Lighthouse audit
  • Address any performance issues

Deliverable: Optimized, secure site

Phase 7: Testing & Training (Day 7-8)

Estimated: 2 hours

  • Full QA testing:
    • All pages render correctly
    • Forms submit properly
    • Properties filter/search works
    • Mobile responsiveness
    • Cross-browser (Chrome, Firefox, Safari, Edge)
  • Create documentation
  • Conduct training session (1-2 hours)
  • Client review on staging

Deliverable: Tested site ready for launch


5. Custom Post Types & Taxonomies

5.1 Property CPT

// Registration in custom-post-types.php
register_post_type('property', [
    'labels' => [
        'name' => 'Properties',
        'singular_name' => 'Property',
        'add_new' => 'Add New Property',
        'add_new_item' => 'Add New Property',
        'edit_item' => 'Edit Property',
        'view_item' => 'View Property',
        'search_items' => 'Search Properties',
        'not_found' => 'No properties found',
    ],
    'public' => true,
    'has_archive' => true,
    'rewrite' => ['slug' => 'properties'],
    'menu_icon' => 'dashicons-building',
    'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
    'show_in_rest' => true, // Enable block editor
]);

5.2 Property Taxonomies

// Property Type
register_taxonomy('property_type', 'property', [
    'labels' => ['name' => 'Property Types'],
    'hierarchical' => true,
    'rewrite' => ['slug' => 'property-type'],
    'show_in_rest' => true,
]);

// Property Status (or use ACF field)
register_taxonomy('property_status', 'property', [
    'labels' => ['name' => 'Status'],
    'hierarchical' => true,
    'rewrite' => ['slug' => 'status'],
    'show_in_rest' => true,
]);

// Location/City
register_taxonomy('property_location', 'property', [
    'labels' => ['name' => 'Locations'],
    'hierarchical' => true,
    'rewrite' => ['slug' => 'location'],
    'show_in_rest' => true,
]);

5.3 Agent CPT (Optional)

If managing agents as posts rather than ACF options:

register_post_type('agent', [
    'labels' => ['name' => 'Agents', 'singular_name' => 'Agent'],
    'public' => true,
    'has_archive' => true,
    'rewrite' => ['slug' => 'agents'],
    'menu_icon' => 'dashicons-id-alt',
    'supports' => ['title', 'thumbnail'],
    'show_in_rest' => true,
]);

6. Key Features Implementation

6.1 Property Search & Filter

Approach: AJAX-based filtering without page reload

// property-filter.js (simplified)
document.addEventListener('DOMContentLoaded', function() {
    const filterForm = document.querySelector('.property-filters');

    filterForm.addEventListener('change', function() {
        const formData = new FormData(filterForm);
        formData.append('action', 'filter_properties');

        fetch(ajaxurl, {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            document.querySelector('.property-grid').innerHTML = data.html;
            document.querySelector('.results-count').textContent = data.count;
        });
    });
});

Approach: Lightbox gallery using Fancybox or similar

  • Thumbnail grid below main image
  • Click to open lightbox
  • Swipe support on mobile
  • Lazy loading for performance

6.3 Agent Assignment

Properties link to agents for "Listed By" section:

  • ACF relationship field connecting Property -> Agent
  • Display agent card on single property page
  • Click to contact or view agent profile

6.4 Contact Form

Using Contact Form 7 or WPForms:

  • Standard contact form (Name, Email, Phone, Message)
  • Property inquiry form (includes property reference)
  • Email notifications to appropriate agent

6.5 Map Integration

Options:

  1. Google Maps Embed (simple, free) - paste embed code per property
  2. Google Maps API (interactive) - requires API key, more setup
  3. Leaflet/OpenStreetMap (free, no API key) - good alternative

Recommendation: Start with embed codes, upgrade to API if needed.


7. Theme Customization Options

7.1 theme.json Configuration

{
    "$schema": "https://schemas.wp.org/trunk/theme.json",
    "version": 2,
    "settings": {
        "color": {
            "palette": [
                { "slug": "primary", "color": "#9F3730", "name": "Primary" },
                { "slug": "primary-dark", "color": "#0A0A0A", "name": "Background" },
                { "slug": "text", "color": "#F5F5F5", "name": "Text" },
                { "slug": "text-muted", "color": "#B0B0B0", "name": "Text Muted" }
            ]
        },
        "typography": {
            "fontFamilies": [
                {
                    "fontFamily": "'Abril Fatface', Georgia, serif",
                    "slug": "display",
                    "name": "Display"
                },
                {
                    "fontFamily": "'Inter', 'Droid Sans', Arial, sans-serif",
                    "slug": "body",
                    "name": "Body"
                }
            ]
        },
        "spacing": {
            "units": ["px", "rem", "%"]
        },
        "layout": {
            "contentSize": "800px",
            "wideSize": "1200px"
        }
    }
}

7.2 Customizer Options (if needed)

  • Logo upload
  • Contact information (phone, email, address)
  • Social media links
  • Footer text
  • Google Analytics ID

8. Content Migration

8.1 From Existing Site

Content to migrate from homeprozrealestate.com:

  • Logo image
  • Team member photos and bios
  • Property photos (if available)
  • Testimonial text
  • Company description/mission
  • Contact information

8.2 Content Client Must Provide

  • High-resolution logo (vector preferred)
  • Team headshots (professional quality)
  • Property listings data
  • Property photos
  • Written content for About page
  • Testimonials with permissions

9. Testing Checklist

9.1 Functionality

  • All pages load without errors
  • Navigation works (desktop and mobile)
  • Property archive displays correctly
  • Property filters work
  • Single property page displays all fields
  • Contact forms submit and send emails
  • Search returns relevant results
  • 404 page displays for invalid URLs
  • Links to external sites work (new tab)

9.2 Responsiveness

  • Mobile (320px - 767px)
  • Tablet (768px - 1023px)
  • Desktop (1024px+)
  • Large screens (1440px+)

9.3 Browser Compatibility

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)
  • iOS Safari
  • Android Chrome

9.4 Performance

  • Lighthouse Performance score > 90
  • Images optimized
  • Caching enabled
  • No render-blocking resources
  • Core Web Vitals pass

9.5 SEO

  • All pages have unique titles
  • Meta descriptions set
  • Schema markup validates
  • XML sitemap generated
  • robots.txt configured
  • Canonical URLs set

10. Documentation Deliverables

10.1 User Documentation

  • Adding/editing properties guide
  • Managing property photos
  • Updating team information
  • Using the contact form
  • Basic WordPress admin guide

10.2 Developer Documentation

  • Theme structure overview
  • ACF field reference
  • Custom functions reference
  • Deployment notes

11. Post-Launch Support

11.1 Included in Warranty (60 days)

  • Bug fixes for custom code
  • Functionality not working as designed
  • Critical issues

11.2 Not Included (quoted separately)

  • New features
  • Design changes
  • Third-party plugin issues
  • Content updates
  • Training beyond initial session

11.3 Ongoing Hosting Support (2 hrs/month)

  • WordPress core updates
  • Plugin updates
  • Security monitoring
  • Backup verification
  • Minor content assistance

12. Risk Mitigation

Risk Mitigation
ACF Pro license expiration Included in hosting; developer manages renewal
Plugin conflicts Minimal plugin approach; test thoroughly
Performance issues Build lightweight; optimize images; use caching
Content delays Clear client responsibilities; content deadline
Scope creep Defined deliverables; change order process
Browser compatibility Test on all major browsers before launch

13. Timeline Summary

Phase Duration Deliverable
1. Foundation 2 days Theme framework
2. Property System 2 days Property CPT + templates
3. Page Templates 2 days All page templates
4. Block Patterns 1 day Reusable patterns
5. Content & SEO 0.5 day SEO setup + content
6. Performance 0.5 day Optimized site
7. Testing & Training 1 day Launch-ready
Total ~8-9 days Complete website

Note: Actual calendar time may vary based on client feedback cycles.


14. Open Questions / Decisions Needed

  1. Agent Management: Use ACF options page or separate Agent CPT?
  2. Testimonials: Static content or Testimonial CPT for easy management?
  3. Maps: Google Maps embed or full API integration?
  4. Property Images: Max file size / dimensions requirements?
  5. Email Notifications: Which email(s) receive form submissions?

15. Approval

This implementation plan is a draft for review. Please confirm:

  • Technology stack is acceptable
  • Phase breakdown makes sense
  • All required features are covered
  • Any adjustments needed

16. Development Progress Log

Phase 1: Foundation - COMPLETED

  • Git repository initialized
  • Database baseline snapshot created
  • Theme directory structure created
  • Vite + Tailwind build system configured
  • theme.json with brand colors configured
  • functions.php with includes structure
  • Header template with navigation and mobile menu
  • Footer template with contact info and social links
  • Base page templates (page.php, single.php, 404.php, index.php)
  • Content template parts created

Technical Decisions:

  • Using Vite instead of Webpack (faster builds, simpler config)
  • SCSS with co-located component styles (each component has PHP + SCSS + JS in same folder)
  • Tailwind CSS for utilities, custom SCSS for components
  • jQuery for JavaScript (per client mandate)
  • CSS custom properties for design tokens

Phase 2: Property System - COMPLETED

  • Property custom post type registered
  • Property taxonomies (type, status, location) with default terms
  • ACF free version installed (upgrade to Pro available if needed)
  • Property Details field group configured programmatically
  • Property card component with price, specs, status badge
  • Property archive template with hero and filters
  • Property results with pagination
  • AJAX property filtering with URL state management
  • Single property template with gallery, details, features, agent card
  • Lightbox gallery with thumbnail navigation

Technical Decisions:

  • Using ACF free version (gallery uses relationship field to attachments)
  • AJAX filtering updates URL for shareable/bookmarkable filter states
  • Loading spinner only on first AJAX load (per mandate)
  • Server-side filtering query built from GET/POST parameters
  • Agent card falls back to company contact info if no agent assigned

Files Created (Phase 2):

  • inc/custom-post-types.php
  • inc/acf-fields.php
  • inc/ajax-handlers.php
  • archive-property.php
  • single-property.php
  • template-parts/property/property-card.php/.scss
  • template-parts/property/property-filters.php/.scss/.js
  • template-parts/property/property-results.php
  • template-parts/property/property-gallery.php/.scss/.js
  • template-parts/property/property-agent.php
  • template-parts/property/single-property.scss

Phase 3: Page Templates - COMPLETED

  • Homepage template (front-page.php) with hero, featured properties, features, team, testimonials, CTA
  • About page template (page-about.php) with story, values, team, broker info
  • Contact page template (page-contact.php) with form, contact info, map
  • Blog archive template (archive.php, home.php) with posts grid and sidebar
  • Single post template (single.php) with featured image, sidebar, related posts
  • Search results template (search.php) with mixed content types
  • Full-width page template (template-full-width.php)
  • Landing page template (template-landing.php) with minimal header/footer
  • Contact Form 7 installed and configured
  • WordPress pages created (Home, About, Contact, Blog)
  • Static front page and blog page configured
  • Primary navigation menu created

Reusable Components Created:

  • template-parts/components/hero-section.php/.scss
  • template-parts/components/cta-section.php/.scss
  • template-parts/components/testimonial.php/.scss
  • template-parts/components/agent-card.php/.scss
  • template-parts/components/feature-block.php/.scss
  • template-parts/sidebar/blog-sidebar.php/.scss

Technical Decisions:

  • All page templates follow page-scoped CSS pattern (body class wrapping)
  • Contact Form 7 for forms (can be styled with theme styles)
  • Team data hardcoded (can be replaced with ACF repeater or Team CPT later)
  • Testimonials hardcoded (can be replaced with Testimonials CPT later)
  • Blog sidebar includes search, categories, recent posts, CTA widget
  • Single post shows related posts from same category

Phase 4: Block Patterns - COMPLETED

  • Hero with CTA pattern (full-width cover block with heading, text, buttons)
  • Feature Grid (3-col) pattern (columns with card backgrounds)
  • Team Grid pattern (4-column agent cards with placeholders)
  • Testimonial pattern (quote block with attribution)
  • Split Content pattern (image + text two-column layout)
  • CTA Banner pattern (accent background with heading and button)
  • Contact Info pattern (address, phone, email, hours)
  • Custom "HomeProz" pattern category registered
  • Editor styles created (editor.scss compiled to editor.css)
  • Vite config updated for editor entry point

Block Patterns Created:

  • patterns/hero-cta.php
  • patterns/feature-grid.php
  • patterns/team-grid.php
  • patterns/testimonial.php
  • patterns/split-content.php
  • patterns/cta-banner.php
  • patterns/contact-info.php

Technical Decisions:

  • Using WordPress 6.0+ pattern file format (PHP files with header comments)
  • Patterns use inline styles with theme color values for consistency
  • No emojis used in patterns (per mandate)
  • Editor styles match frontend design tokens
  • Placeholder images use via.placeholder.com (to be replaced with real images)

Phase 5: Content & SEO - COMPLETED

  • Yoast SEO plugin installed and configured
  • SEO titles and meta descriptions configured for all post types
  • Schema.org structured data markup implemented:
    • RealEstateAgent/LocalBusiness schema (sitewide)
    • RealEstateListing schema (single property pages)
    • WebSite schema with SearchAction (homepage)
    • BreadcrumbList schema (all pages except homepage)
  • Open Graph and Twitter Card meta tags configured via Yoast
  • Favicon/site icon support enabled (uses WordPress Customizer)
  • Theme color meta tags for mobile browsers
  • XML sitemap enabled and accessible at /sitemap_index.xml
  • Rewrite rules flushed for proper URL handling

Files Created:

  • inc/schema-markup.php (custom Schema.org JSON-LD output)

Technical Decisions:

  • Using Yoast SEO free version for SEO management
  • Custom Schema.org markup in addition to Yoast's schema (more specific real estate types)
  • Site icon/favicon managed via WordPress Customizer (Appearance > Customize > Site Identity)
  • Theme color set to #0A0A0A (background dark) for mobile browser chrome

Phase 6: Performance & Security - COMPLETED

  • WebP image conversion via "Converter for Media" plugin
  • Nginx rewrite rules for serving WebP to supported browsers
  • Server dependencies documented in DEPENDENCIES.md
  • AIOS (All In One WP Security) plugin installed and configured
  • Caching plugin - SKIPPED (not requested)
  • Backups plugin - SKIPPED (not requested)

WebP Conversion:

  • Plugin: Converter for Media v6.3.2
  • Conversion method: PHP GD/Imagick (both available, WebP supported)
  • WebP files stored in: /wp-content/uploads-webpc/
  • Nginx serves WebP when browser sends Accept: image/webp header
  • No external APIs or services used (fully local processing)

Security (AIOS) Configuration:

  • Plugin: All In One WP Security v5.4.4
  • Login lockdown: 10 attempts in 5 minutes = 30 min lockout (max 60 min)
  • Instant lockout usernames: admin, administrator, test
  • Generic login error messages enabled
  • Email notifications on lockout enabled
  • Login honeypot enabled
  • Registration honeypot enabled
  • Comment spam bot blocking enabled
  • User enumeration prevention enabled
  • Unauthorized REST API requests blocked
  • File editing disabled in admin
  • WP generator meta removed
  • Default WP file access prevented (readme.html, license.txt, etc.)
  • Debug log file access blocked
  • Directory index views disabled
  • Clickjacking protection (X-Frame-Options)
  • 404 logging enabled
  • Basic firewall enabled
  • XML-RPC pingback disabled

NOT enabled (conservative approach):

  • Renamed login page (can break plugins/bookmarks)
  • Cookie-based brute force prevention (can lock out legitimate users)
  • Forced logout after X minutes
  • CAPTCHA on forms (can hurt UX)
  • 5G/6G firewall rules (Sucuri WAF will handle this)
  • File change detection scanning (resource intensive)
  • IP blacklisting (Sucuri WAF will handle this)

Files Created:

  • /var/www/html/DEPENDENCIES.md (server dependency documentation)

Files Modified:

  • /etc/nginx/sites-available/default (WebP rewrite rules added)

Phase 7: Testing & Launch - PENDING

Phase 8: RHR Structural Enhancements - NEW

Based on Robert Hoffman Realty competitor analysis (November 30, 2025)

This phase adds structural elements to match competitor site conventions:

8.1 Homepage Enhancements

  • Add location search dropdown to hero section
  • Add service cards section (Buy/Rent/Sell) below hero
  • Separate residential and commercial listings into distinct homepage sections

8.2 Navigation & New Pages

  • Update navigation: Properties | Communities | About | Resources | Contact
  • Create Communities landing page (page-communities.php)
  • Create individual community template (template-community.php)
  • Create community pages: Albert Lea, Austin, Glenville, Emmons, etc.
  • Create Resources landing page (page-resources.php)
  • Create individual resource template (template-resource.php)
  • Create resource pages: Buyer's Guide, Seller's Guide

8.3 Property Archive Enhancements

  • Add map view to property listings page (split layout: map + grid)
  • Add map toggle for mobile view
  • Add property markers to map based on location
  • Add office hours display
  • Add professional association logos (REALTOR, Equal Housing, MLS)
  • Add license numbers

8.5 ACF Fields for New Features

Community Page Fields
├── community_description (wysiwyg)
├── community_hero_image (image)
├── community_population (text)
├── community_zip_codes (text)
├── community_school_district (text)
└── community_attractions (repeater)

Resource Page Fields
├── resource_intro (wysiwyg)
├── resource_sections (repeater)
│   ├── section_title (text)
│   └── section_content (wysiwyg)
└── resource_cta_text (text)

Theme Options (ACF Options Page)
├── office_hours (textarea)
├── license_numbers (textarea)
└── professional_logos (gallery)

Beads Issue Tracking:

  • html-98b: Add location search dropdown to homepage hero
  • html-5bw: Add service cards section (Buy/Rent/Sell) to homepage
  • html-2fp: Separate Residential and Commercial listings on homepage
  • html-7jz: Add Communities section to navigation and create community pages structure
  • html-cpd: Add map view to property listings archive page
  • html-t8u: Add Resources section to navigation and create resource pages
  • html-3nq: Enhance footer with office hours, professional logos, license numbers

Document Version: 1.6 Last Updated: November 30, 2025 Prepared by: Hanson.xyz Development Team Changes: Added Phase 8 (RHR Structural Enhancements) based on competitor analysis