Successfully migrated the Agent Single Page from AJAX-based listing loading to Rechat Web Components, with a new plugin setting to control the display mode.
Files Modified:
includes/admin/menu-setting.phpincludes/admin/settings-page/other-settings.php
Changes:
- Added new "General Settings" tab in the plugin settings
- Created
rch_general_setting()function to register settings - Added
rch_listing_display_modeoption with 5 display modes:- Combined (Default) - All listings together
- Separate Sections - Active and Sold in separate sections
- Active Only - Only active listings
- Sold Only - Only sold listings
- Slider - Active listings in horizontal slider with navigation buttons
File Modified:
templates/single/agents-single-custom.php
Key Changes:
- ✅ Removed all AJAX-based listing loading divs
- ✅ Added Rechat Web Components (
<rechat-root>and<rechat-listings-list>) - ✅ Implemented conditional rendering based on
rch_listing_display_modesetting - ✅ Added agent ID array to comma-separated string conversion
- ✅ Defined common property types, subtypes, and listing statuses as variables
- ✅ Removed unnecessary JavaScript data passing (kept only lead capture requirements)
- ✅ Added slider mode implementation with navigation buttons and JavaScript
Web Component Attributes Used:
filter_agents- Agent Matrix IDs (comma-separated)filter_property_subtypes- Property subtypes filterfilter_property_types- Property types filterfilter_listing_statuses- Listing status filtersfilter_search_limit- Results per page (for separate sections)
File Modified:
assets/js/rch-agent-single.js
Changes:
- ✅ Removed ~600 lines of AJAX listing loading code
- ✅ Removed pagination classes and logic
- ✅ Removed listing renderer classes
- ✅ Removed AJAX service for listings
- ✅ Kept only lead capture form functionality
- ✅ Simplified from 757 lines to ~180 lines
- ✅ Maintained all lead capture features (form validation, SDK integration, success/error handling)
Backup Created:
- Old version saved as
rch-agent-single.backup.js
File Modified:
assets/css/frontend-styles.css
Added:
- Slider container styles
- Navigation button styles (prev/next)
- Hover and active states for buttons
- Scrollbar customization for slider mode
- Responsive adjustments for mobile devices
<rechat-root
filter_agents="agent-ids"
filter_property_subtypes="..."
filter_property_types="..."
filter_listing_statuses="Active, Active Contingent, Active Kick Out, Active Option Contract, Active Under Contract, Pending"
>
<rechat-listings-list></rechat-listings-list>
</rechat-root>Two separate <rechat-root> components:
- One for Active listings
- One for Sold listings
- Each with
filter_search_limit="5"
Single <rechat-root> component with appropriate status filters
<rechat-root filter_agents="..." ...>
<div class="rch-slider-container">
<button class="rch-nav-btn rch-nav-btn-prev" id="prevBtn">‹</button>
<rechat-listings-list></rechat-listings-list>
<button class="rch-nav-btn rch-nav-btn-next" id="nextBtn">›</button>
</div>
</rechat-root>- ✅ Cleaner Code - Removed ~600 lines of complex AJAX/pagination logic
- ✅ Better Performance - Web Components handle listing loading internally
- ✅ Easier Maintenance - Less custom code to maintain
- ✅ Consistent UI - Uses standard Rechat SDK components
- ✅ More Features - Slider mode adds new display option
- ✅ Flexibility - Easy to add more display modes in the future
- Verify "General Settings" tab appears in plugin settings
- Test all 5 display mode options save correctly
- Test Combined mode displays all listings
- Test Separate Sections mode shows Active and Sold separately
- Test Active Only mode shows only active listings
- Test Sold Only mode shows only sold listings
- Test Slider mode with navigation buttons
- Verify lead capture form still works correctly
- Test on mobile devices (responsive design)
- Verify agent IDs are passed correctly to web components
- The Rechat SDK must be loaded for web components to work
- Agent IDs are automatically converted from array to comma-separated string
- Lead capture form functionality remains unchanged
- Old JavaScript file backed up as
rch-agent-single.backup.js
- Settings automatically use 'combined' as default if not set
- Existing sites will continue to work with combined view
- Admins can switch to new modes via General Settings tab
- No database migration required
Version: 2.1.0
Date: January 2026
Branch: dev