WP Manifestindependent plugin directory
manifest / editor / realsatisfied-blocks

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.

★ 1stars
9release downloads
v1.4.0latest · 1 year ago

Install

Download realsatisfied-blocks-v1.4.0.zip From the v1.4.0 release on GitHub, Sep 3, 2025

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.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Version: 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

Blocks in Block Picker Showing the widget blocks in the block editor.

Office Ratings & Testimonials Display

Office Testimonials Example of Office Testimonials block displaying customer reviews, pagination, and responsive layout.

Office Tesimonials Example

Complete Integration on C21 Masters Example of the Office Ratings Blocks showing how they integrate seamlessly into a professional real estate website layout. Website not published yet

Installation

  1. Upload the realsatisfied-blocks folder to /wp-content/plugins/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. 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_feed custom field on office/company posts
  • Or use the realsatisfied_feed ACF field if Advanced Custom Fields is installed

For Agent Blocks:

  • Set the realsatified-agent-vanity custom 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.

Tag
Published
Assets
Downloads
v1.4.0 latest
Sep 3, 2025 1 year ago
realsatisfied-blocks-v1.4.0.zip
8
Jul 12, 2025 1 year ago
realsatisfied-blocks-v1.2.0-production.zip
0
Jul 9, 2025 1 year ago
realsatisfied-blocks-v1.0.0.zip
1
A- grade

Security

RealSatisfied Blocks 1.4.0 · audited by WP Registry

Low-severity findings only.

1 low
Audited release
1.4.0
Findings
1
Worst severity
low
Content hash
c1b2b410d9c00d7e19ceac8b…

Findings

  • low Unauthenticated AJAX cache-clear actions lack capability and nonce checks

    missing_auth

    rsab_clear_agent_cache, rsob_clear_feed_cache, and rsob_clear_company_feed_cache are registered for nopriv and their callbacks do not call check_ajax_referer or current_user_can. The agent clear callback is effectively a no-op (only adds unused filters), but the endpoints remain unnecessary unauthenticated attack surface and could be wired to real cache deletes later.

    includes/class-agent-rss-parser.php:71-232

    Recommendation

    Remove nopriv registrations; require manage_options (or edit_posts) and a nonce before any cache mutation.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.