Reputando Reviews Widget

Plugin Banner

Reputando Reviews Widget

by Reputando

Download
Description

The Reputando Reviews Widget plugin allows you to showcase customer reviews collected via the Reputando platform directly on your WordPress site.

This is ideal for businesses who want to build trust by showing real customer feedback from various review channels in one unified widget. Whether you’re running an eCommerce site, local business, or a service company, this plugin helps you boost conversions by making reviews visible where they matter most.

You can easily embed reviews using a simple shortcode and customize how they look to match your site’s style.

Key Features

  • ✅ Display customer reviews from your Reputando account
  • 🔄 Automatically syncs new reviews
  • 🧩 Lightweight and easy to configure
  • 🔧 Simple shortcode to embed reviews anywhere
  • 🎨 Minimal and responsive design

SHORTCODE

Use the following shortcode to embed your reviews:

[reputando_reviews id="{id}"]

Replace {id} with your Reputando shortcode post ID.

Example:
[reputando_reviews id=”1234″]

Usage

  1. After activating the plugin, go to Reputando > Connect in your WordPress dashboard.
  2. Connect the plugin to your Reputando account to pull in your latest reviews.
  3. Then go to Reputando > Shortcodes to generate a shortcode with customized design settings.
  4. Copy the generated shortcode and paste it into any page or post where you want the reviews to appear.
  5. Save the page and view it on the front end to see your reviews live.

External Services

This plugin connects to the Reputando API (https://app.reputando.com) to fetch and manage business reviews.

The plugin sends the following data to the Reputando API:
– User credentials (email, password) for login and token generation.
– Business identifiers to retrieve and manage reviews.
– Review replies and publishing actions from the WordPress admin.

The API is required for the core functionality of this plugin — including viewing reviews, syncing them, and replying to them.

This service is provided by Reputando.
– Terms of Use: https://app.reputando.com/terms
– Privacy Policy: https://app.reputando.com/privacy

  1. Upload the entire reputando folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the Plugins screen (Plugins > Installed Plugins).

OR

  1. Visit Plugins > Add New
  2. Search for “Reputando”
  3. Install and activate Reputando Reviews Widget
  1. Settings page to connect your Reputando account.

    Settings page to connect your Reputando account.

  2. Layout selection options in the shortcode generator.

    Layout selection options in the shortcode generator.

  3. Review settings in the shortcode generator.

    Review settings in the shortcode generator.

  4. Styling options in the shortcode generator.

    Styling options in the shortcode generator.

2.2.3

  • Sicurezza (critica): il plugin aggiungeva il tag alla whitelist kses di TUTTO il sito, non solo del proprio output. Di conseguenza i commenti e i contenuti degli articoli potevano contenere anche da parte di utenti senza il permesso unfiltered_html o di visitatori non autenticati. Il filtro ora è limitato al contesto ‘post’ e non consente più , che nessun output del plugin richiedeva
  • Sicurezza (critica): il plugin aggiungeva il protocollo “javascript” ai protocolli consentiti a livello globale, indebolendo esc_url() per l’intero sito (core, temi e altri plugin). Il filtro è stato rimosso e i link segnaposto ora usano href=”#”
  • Sicurezza: il testo delle recensioni veniva inserito nell’admin con .html() senza sanificazione. Una recensione scritta su un canale esterno (es. Google) contenente codice HTML/JavaScript poteva eseguire script nella sessione dell’amministratore che la apriva. Ora viene inserito come testo
  • Sicurezza: un endpoint pubblico non autenticato (usato dal popup dello slider) accettava un ID di post qualsiasi senza verificarne tipo e stato: era possibile leggere il titolo e i metadati di articoli in bozza, privati o pianificati. Ora risponde solo per le recensioni pubblicate
  • Sicurezza: il salvataggio e la lettura delle risposte alle recensioni richiedevano la capability generica edit_posts e non verificavano il post: un utente con ruolo Collaboratore poteva scrivere la risposta su qualsiasi contenuto del sito (e farla pubblicare sul profilo dell’attività). Ora è richiesto il permesso di modifica sulla specifica recensione
  • Sicurezza: la connessione dell’account, l’importazione recensioni e il cambio di location richiedevano edit_posts, permettendo a Collaboratori e Autori di sovrascrivere il token o cambiare la location mostrata sul sito. Ora richiedono manage_options
  • Sicurezza: aggiunta la protezione dall’accesso diretto ai file (defined ABSPATH) in 5 file che ne erano privi
  • Corretto: la lista recensioni in admin andava in errore fatale (pagina bianca) in presenza di recensioni Expedia, o con canale “booking” minuscolo: il calcolo delle stelle produceva un numero negativo e str_repeat() falliva su PHP 8
  • Corretto: aprendo la modifica di una risposta già salvata, il campo veniva precompilato con “true” invece del testo, e salvando si perdeva la risposta originale
  • Corretto: salvando una risposta senza modificarla veniva mostrato l’errore “Failed to save reply” pur essendo tutto corretto
  • Corretto: il pulsante “Copia risposta” non ha mai funzionato (nonce non inviato, risposta 403)
  • Corretto: il filtro per canale nella lista recensioni non filtrava nulla (il nonce richiesto non veniva mai generato) e il canale selezionato non restava evidenziato
  • Corretto: i link con href=”#” presenti nei temi smettevano di funzionare su tutte le pagine del sito, a causa di un selettore non valido nello script del widget
  • Corretto: la validazione dell’intervallo di valutazione confrontava stringhe anziché numeri: un intervallo valido da 9 a 10 veniva rifiutato, mentre uno impossibile da 10 a 2 veniva accettato
  • Corretto: i filtri della lista recensioni alteravano anche query non correlate della stessa pagina (mancava il controllo is_main_query) e sovrascrivevano i filtri impostati da altri plugin
  • Corretto: salvando uno shortcode mentre nessun canale è disponibile (es. durante una risincronizzazione) la configurazione dei canali veniva azzerata silenziosamente
  • Corretto: l’opzione “Pagination” non risultava mai selezionata riaprendo uno shortcode salvato
  • Corretto: un valore non valido nel campo canali causava un errore fatale al salvataggio dello shortcode (array_filter su tipo non array)
  • Corretto: nel popup dello slider una recensione senza data mostrava “01-01-1970”
  • Corretto: il Text Domain dichiarato nell’header (“reputando”) non corrispondeva a quello usato dalle stringhe (“reputando-reviews-widget”), impedendo il funzionamento di qualsiasi traduzione
  • Sicurezza: la disconnessione dell’account (che può cancellare tutte le recensioni e gli shortcode) richiedeva solo il nonce e non un controllo dei permessi. Poiché il nonce è presente anche nelle pagine di modifica articoli, utenti con ruolo Collaboratore o Autore potevano disconnettere l’account ed eliminare i dati del plugin. Ora è richiesta la capability manage_options
  • Corretto: la disconnessione di un sito non revoca più i token di TUTTI gli altri siti collegati allo stesso account Reputando. L’endpoint revokeToken agisce per utente (non per singolo token), quindi premere “Disconnetti” su un sito scollegava anche tutti gli altri: ora la disconnessione avviene solo in locale
  • Corretto: il pulsante “Avvia sincronizzazione” non funzionava (errore JavaScript “$ is not a function”: il codice era fuori dalla closure jQuery)
  • Corretto: la pubblicazione della risposta a una recensione aveva la condizione invertita — una risposta pubblicata correttamente veniva segnalata come “Failed to update” e non marcata come pubblicata, mentre un errore dell’API la marcava come pubblicata
  • Corretto: la frequenza “Una volta a settimana” non pianificava alcuna sincronizzazione (l’intervallo ‘weekly’ non è disponibile su tutte le versioni di WordPress supportate e wp_schedule_event falliva in silenzio); ora l’intervallo viene registrato dal plugin
  • Aggiunto ripristino automatico della pianificazione: se l’evento di sincronizzazione risulta mancante (aggiornamento manuale, migrazione del sito, reset del cron) o non corrisponde più alla frequenza impostata, viene ripianificato da solo — prima la sincronizzazione poteva interrompersi in silenzio
  • Corretto: i pulsanti “Riconnetti account” e “Disconnetti” si sovrapponevano nella pagina Connect
  • Corretto: rimossi gli ultimi due operatori “??” rimasti nel JavaScript admin, per compatibilità con i minifier PHP-based
  • Nessuna modifica ai dati salvati: token, location, email di notifica, frequenza e recensioni esistenti restano invariati dopo l’aggiornamento

2.2.2

  • Corretto (causa principale): le chiamate all’API ora inviano l’header “Accept: application/json”. Senza di esso il backend (Laravel Sanctum), con token scaduto, rispondeva con un redirect 302 alla pagina di login invece di un 401: il plugin lo interpretava come errore generico e mostrava falsi “token non valido”. Ora un token scaduto viene riconosciuto in modo affidabile
  • Corretto: l’endpoint users/getUserData viene ora chiamato in GET (accetta solo GET/HEAD; la chiamata in POST restituiva 405 e veniva scambiata per token non valido)
  • Corretto: il plugin non segnala più erroneamente “token scaduto/non valido” quando l’errore è temporaneo (rete, 5xx) o lato servizio — la mail di notifica e il banner ora si attivano solo per un token realmente respinto (verifica esplicita del token prima di allertare)
  • Aggiunto pulsante “Riconnetti account” nella pagina Connect quando il token risulta non valido (prima era disponibile solo “Disconnetti”): il link nella mail e nel banner ora apre direttamente il popup di riconnessione
  • Errori di sincronizzazione (manuale e automatica) ora mostrano messaggi corretti in base alla causa reale
  • Aggiunto logging diagnostico opzionale (disattivato di default) attivabile con la costante REPUTANDO_DEBUG o l’opzione reputando_diag_log, per registrare status HTTP e risposta grezza dell’API in caso di errore
  • Nessuna modifica ai dati salvati: token, location, email di notifica, frequenza e recensioni esistenti restano invariati dopo l’aggiornamento

1.0.2

  • Initial release

1.0.3

  • Correzioni minori

2.0

  • Aggiunto bottone di chiusura (X) al popup recensione in tutti i layout (griglia, lista, slider)
  • Aggiunto scroll interno al popup recensione — il testo lungo non fuoriesce più dal modal
  • Corretto trabocco contenuto nel popup slider: aggiunto max-height e overflow-y: auto su .reviewCardTop
  • Il modal ora blocca lo scroll della pagina sottostante quando è aperto
  • Sostituita la paginazione numerata con pulsante “Load more” (caricamento incrementale senza ricarica pagina)
  • Corretto: il widget Griglia ora rispetta il campo “Numero di recensioni” come limite totale
  • Corretto: il filtro per valutazione ora funziona anche se è impostato solo il limite inferiore o solo il superiore
  • Aggiunto supporto stelle mezze-stelle e stelle vuote in tutti i layout (griglia, lista, slider, badge)
  • Normalizzazione automatica scala 1-10 1-5 stelle per i canali Booking ed Expedia
  • Badge popup: le recensioni si adattano in altezza al contenuto (autoHeight carousel) — eliminati gli spazi bianchi su card brevi
  • Corretto flash visivo del popup Badge al caricamento pagina
  • Corretto: le icone dei canali ora si caricano correttamente per tutti i canali (mapping case-insensitive, supporto “Google Shopping”)
  • Corretto: variabile PHP $post->ID non definita nel handler AJAX paginazione (causava PHP notice)
  • Corretto: la funzione di query ora restituisce sempre un array a due elementi — eliminati PHP warning nel destructuring
  • Corretto: $channel non inizializzato nel primo loop del badge (dati JSON-LD schema errati)
  • Corretto: typo javascript::void(0) javascript:void(0) sui link “read more” nelle card
  • Corretto divide-by-zero nel calcolo della media stelle nel badge se non ci sono recensioni
  • Corretto: il contatore totalSlides nel badge ora mostra il numero reale di recensioni
  • Aggiunto mapping icone canali anche nell’admin (colonna Titolo nella lista recensioni)
  • Compatibilità WP Rocket: JS/CSS del plugin esclusi automaticamente da minificazione, concatenazione, Delay JS e Remove Unused CSS
  • Rimossi error_log() di debug rimasti nella produzione
  • Sostituiti attributi src="" vuoti nelle immagini popup con placeholder base64 (compatibilità Lazy Load WP Rocket)
  • Sostituiti tutti gli operatori ?? con || in JavaScript per compatibilità con minifier PHP-based
Back to top