RealSatisfied Blocks WP Registry grade A-. Low-severity findings · 1 findingWP RegistryLow-severity findings · 1 findingOpen the reportA-
A WordPress plugin providing WP blocks for displaying RealSatisfied office and agent data with modern WordPress Interactivity API. Based on the original RealSatisfied Wordpress plugin and refreshed with the help of Claude Sonnet.
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/derintolu/realsatisfied-blocks/releases/download/v1.4.0/realsatisfied-blocks-v1.4.0.zipVersion: 1.2.0
Requires WordPress: 5.4+
Tested up to: WordPress 6.7
License: GPLv2 or later
A standalone WordPress plugin providing Gutenberg blocks for displaying RealSatisfied office and agent data with modern WordPress Interactivity API. No dependencies required.
🎉 Now Completely Standalone
As of version 1.0.0, this plugin is completely standalone and requires no external dependencies. All functionality has been built as modern, self-contained Gutenberg blocks.
Overview
RealSatisfied Blocks is a standalone WordPress plugin that provides three powerful Gutenberg blocks for displaying real estate office and agent testimonials and ratings. The plugin uses the modern WordPress Interactivity API for enhanced frontend interactions including pagination, filtering, and dynamic content loading.
Evolution from Widget Dependency to Standalone Plugin
Original Foundation: This plugin started as a modernization effort that required the RealSatisfied Widget plugin as a dependency. The original RealSatisfied Widget provided essential RSS parsing functionality and data processing capabilities that formed the foundation for our Gutenberg blocks.
Standalone Transformation: Through multiple development iterations, we successfully extracted, modernized, and integrated all the necessary functionality from the RealSatisfied Widget directly into this plugin. This transformation eliminated the external dependency while preserving and enhancing all the core features.
⚠️ Important: This plugin is now completely standalone and does not require any other plugins to function. It includes all necessary RSS parsing, data processing, and display functionality that was originally provided by the RealSatisfied Widget plugin.
Features
Core Functionality
- Standalone Operation: No dependencies on other plugins
- WordPress Interactivity API: Modern, efficient frontend interactions
- Responsive Design: Mobile-first, adaptive layouts
- Gutenberg Integration: Native WordPress block editor support
- Performance Optimized: Efficient caching and conditional asset loading
- Accessibility Ready: WCAG compliant markup and interactions
Available Blocks
1. 🎉 NEW: Testimonial Marquee Block
- Seamless dual-row infinite scroll animation
- Company-wide RSS testimonial aggregation
- Advanced randomization for agent diversity
- GPU-accelerated smooth animations
- Responsive design with mobile optimization
- Live editor preview with ServerSideRender
2. Office Ratings Block
- Display overall office satisfaction ratings
- Show recommendation and performance metrics
- Configurable rating display formats
- Star rating visualization
3. Office Testimonials Block
- Display customer testimonials for real estate offices
- Pagination with configurable items per page
- Filtering by customer type and rating
- Multiple layout options (grid, list)
- Star ratings for satisfaction, recommendation, and performance
- Customer avatar support
- Date formatting options
4. Agent Testimonials Block
- Display customer testimonials for individual agents
- Agent-specific data sourcing via RSS feeds
- Pagination and filtering capabilities
- Responsive grid layouts
- Star rating displays
- Customer information with avatars
Technical Architecture
WordPress Interactivity API Integration
All blocks utilize the modern WordPress Interactivity API (available in WordPress 6.5+) for:
- Client-side State Management: Efficient state handling without jQuery
- Server-side Rendering: SEO-friendly initial content
- Progressive Enhancement: Works without JavaScript, enhanced with it
- Performance: Minimal JavaScript footprint
RSS Data Processing
- Custom RSS Parsers: Built-in parsing for office and agent feeds
- Data Validation: Comprehensive input sanitization and validation
- Encoding Fixes: Robust handling of special characters and encoding issues
- Caching: Efficient data caching to minimize RSS feed requests
Data Encoding & Character Handling
The plugin includes comprehensive text processing to handle:
- HTML entity decoding
- UTF-8 encoding normalization
- Special character cleanup
- Smart quote and symbol conversion
- Whitespace normalization
Screenshots
Blocks in the Block Picker
Showing the widget blocks in the block editor.
Office Ratings & Testimonials Display
Example of Office Testimonials block displaying customer reviews, pagination, and responsive layout.
Office Tesimonials Example
Example of the Office Ratings Blocks showing how they integrate seamlessly into a professional real estate website layout. Website not published yet
Installation
- Upload the
realsatisfied-blocksfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Blocks will be available in the Gutenberg editor under the "RealSatisfied" category
Configuration
RSS Feed Setup
Blocks require RSS feed URLs to be configured:
For Office Blocks:
- Set the
realsatisfied_feedcustom field on office/company posts - Or use the
realsatisfied_feedACF field if Advanced Custom Fields is installed
For Agent Blocks:
- Set the
realsatified-agent-vanitycustom field on person/agent posts - Or use the ACF equivalent field
Block Settings
Each block provides configurable options:
- Items per page: Control pagination
- Layout options: Grid vs list layouts
- Column counts: Responsive grid configurations
- Filtering: Enable/disable customer type and rating filters
- Display options: Show/hide various data elements
Development
Generated with GitHub Copilot
This plugin was developed with extensive assistance from GitHub Copilot, an AI-powered coding assistant. Copilot helped with:
- Architecture Design: Structuring the plugin using WordPress best practices
- WordPress Interactivity API: Implementing modern WordPress patterns
- Code Generation: Writing PHP classes, JavaScript modules, and CSS styles
- Problem Solving: Debugging encoding issues, block registration, and API integration
- Documentation: Creating comprehensive inline documentation and this README
Code Structure
realsatisfied-blocks/
├── realsatisfied-blocks.php # Main plugin file
├── assets/
│ └── realsatisfied-blocks.css # Consolidated styles
├── blocks/
│ ├── agent-testimonials/
│ │ ├── agent-testimonials.php # Block registration & rendering
│ │ ├── agent-testimonials-editor.js # Editor configuration
│ │ └── view.js # Frontend Interactivity API
│ ├── office-ratings/
│ │ ├── office-ratings.php
│ │ └── office-ratings-editor.js
│ └── office-testimonials/
│ ├── office-testimonials.php
│ ├── office-testimonials-editor.js
│ └── view.js
├── includes/
│ ├── class-agent-rss-parser.php # Agent RSS feed processing
│ ├── class-office-rss-parser.php # Office RSS feed processing
│ ├── class-custom-fields.php # Custom field handling
│ └── class-widget-compatibility.php # Optional legacy compatibility
└── README.md # This file
Key Technical Decisions
1. WordPress Interactivity API Migration
Challenge: Original blocks used jQuery for frontend interactions
Solution: Migrated to WordPress Interactivity API for:
- Better performance with smaller JavaScript footprint
- Native WordPress integration
- Future-proof compatibility
- Server-side rendering with client-side enhancement
2. Encoding Issues Resolution
Challenge: Customer and agent names displayed with encoding artifacts
Solution: Implemented comprehensive clean_rss_text() function:
private function clean_rss_text($text) {
if (empty($text)) return '';
// Decode HTML entities
$text = html_entity_decode($text, ENT_QUOTES | ENT_HTML5, 'UTF-8');
// Handle common encoding issues
$replacements = array(
'’' => "'",
'“' => '"',
'â€\x9d' => '"',
// ... additional mappings
);
$text = str_replace(array_keys($replacements), array_values($replacements), $text);
// Normalize and clean
return trim(preg_replace('/\s+/', ' ', $text));
}
3. Block Registration Architecture
Challenge: Ensuring consistent block registration across different WordPress configurations
Solution: PHP-based registration with direct instantiation:
// Initialize blocks in main plugin init hook
if (class_exists('RealSatisfied_Office_Testimonials_Block')) {
$office_testimonials_block = new RealSatisfied_Office_Testimonials_Block();
$office_testimonials_block->register_block();
}
4. Standalone Architecture
Challenge: Removing dependency on legacy widget plugin while maintaining functionality
Solution:
- Extracted and reimplemented all necessary functions
- Created standalone RSS parsing classes
- Maintained optional compatibility layer
- Comprehensive testing to ensure no functional regression
Changelog
Version 1.4.0 (July 8, 2025)
- BREAKING: Removed dependency on RealSatisfied Review Widget plugin
- NEW: Standalone operation with all functionality built-in
- IMPROVED: WordPress Interactivity API integration for all blocks
- FIXED: Character encoding issues in customer/agent names and descriptions
- ENHANCED: Performance optimizations and asset loading improvements
- ADDED: Comprehensive documentation and code comments
Previous Versions
- 1.3.x: Interactivity API migration and encoding fixes
- 1.2.x: Block registration improvements and debugging
- 1.1.x: Office agents block development (later removed)
- 1.0.x: Initial release with basic block functionality
Browser Support
- Modern Browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile: iOS Safari 14+, Android Chrome 90+
- Graceful Degradation: Works without JavaScript (server-rendered content)
Performance
- Conditional Loading: Assets only load when blocks are present
- Optimized CSS: Single consolidated stylesheet
- Minimal JavaScript: Interactivity API modules only when needed
- Efficient Caching: RSS feed data caching to reduce external requests
- Progressive Enhancement: Core functionality works without JavaScript
Security
- Input Sanitization: All user inputs and RSS data properly sanitized
- Output Escaping: All output properly escaped for XSS prevention
- Capability Checks: Proper WordPress capability verification
- Nonce Verification: CSRF protection for all admin actions
Support
For technical support or feature requests, please refer to the plugin documentation or contact the development team.
Credits
Original Foundation: Built upon functionality from the RealSatisfied Widget plugin - The original RSS parsing logic, data extraction patterns, and RealSatisfied API integration provided the essential foundation that made this standalone plugin possible.
Development: Enhanced with GitHub Copilot AI assistance
WordPress Integration: Following WordPress coding standards and best practices
Architecture: Modern WordPress block development patterns
Key Transformation: Successfully migrated from a widget-based dependency model to a standalone, modern Gutenberg blocks architecture while preserving and enhancing all core functionality.
This plugin demonstrates the power of AI-assisted development while maintaining high code quality and WordPress best practices.
Releases
3 releases. Each count is every asset in that release; expand a row for the breakdown.