Tempo di Lettura: 6 minuti
Ecco finalmente il mio secondo plugin per WordPress: Filter Badwords Comment.
Nato soprattutto per l’esigenza di censurare alcune parole offensive presenti nei commenti su questo sito (specie nella calda sezione Xbox 360 vs PlayStation 3) ho deciso di renderlo pubblico per dare ad altri webmaster e blogger la possibilità di proteggere i propri lettori dalla lettura di parole che potrebbero offendere la sensibilità personale.
Caratteristiche del plugin
Filter Badwords Comment, è stato strutturato in modo da essere altamente personalizzabile anche dal Pannello di Amministrazione di WordPress. Infatti presenta, sotto il menu Impostazioni, una sezione “Filter Badwords Comment” in cui, è presente una textarea con elencate tutte le parole da filtrare. Inizialmente questa area è nascosta, per evitare di offendere la sensibilità delle persone.
Solo dopo aver visualizzato sul tasto Show (Visualizza nel caso abbiate la versione di WordPress localizzata in italiano) verrà visualizzata una area di modifica del dizionario delle parole, una per riga, da censurare.
Qui sono presenti sia singole parole (per quanto possibile nella loro versione al plurale e al singolare e in quelle artefatte) e sia da parole composte (le classiche frasi fatte offensive).
Per il plugin ho realizzato 2 vocabolari: badwords_IT.txt e badwords_EN.txt. Entrambi contengono parole offensive nelle rispettive lingue ITALIANO e INGLESE. A seconda di quale database di base scegliete dovete rinominarlo nell’unico file che il plugin legge: badwords.txt (che di default ho comunque incluso e contiene solo le parole italiane). Ovviamente nulla esclude che potete creare un vostro nuovo file con le parole da censurare: quello che ho fatto io è solamente di fornirvi tutti gli strumenti in modo da avere una base di partenza su cui far funzionare il plugin per wordpress.
Per i blog multilingua, potete benissimo realizzare un file unico che racchiuda entrambe le lingue anche se lo sconsiglio perché le parole inglesi potrebbero essere facilmente trovate in parte di quelle italiane (un esempio è: “mettere in ballo” in cui la parola “ball” verrebbe censurata).
Anche nel caso di parole italiane vi potrebbero essere problemi di censure parziali delle parole perché, magari, in mezzo è stata trovata una parola da censurare (è il caso, per esempio, di grafica“).
Per come ho sviluppato il plugin, che usa la funzione php di str_replace() su tutto il testo del commento e non tiene in considerazioni le sentence, il problema non è facilmente risolvibile. Per cui ho risolto eliminando quelle parole da censurare che potrebbero essere facilmente confondibili con altre di uso comune.
Se avete qualche suggerimento per migliorare questo plugin siete sempre i benvenuti!
Come funziona
Il plugin Filter Badwords Comment non fa altro che, ogni volta che WordPress deve visualizzare un commento, interrogare un file di testo e ricercare le relative corrispondenze. Una volta trovate le parole da censurare, queste vengono nascoste dietro degli asterischi solo in visualizzazione (le parole rimangono comunque inalterate nel database). So che la soluzione del file di testo non è la soluzione più veloce di interrogazione di un elenco di dati, ma sicuramente era quella più veloce e funzionale, perché, a differenza di un array interno al plugin o di un campo in una tabella mysql, è facilmente modificabile ed esportabile in quanto è un semplice file di testo in ASCII. Per semplificare la modifica online del parole da censurare ho, comunque, previsto la possibilità di poter modificare il file dal Pannello di Amministrazione di WordPress.
Da qui, inoltre, è possibile anche scegliere se censurare l’intera parola da fltrare con tutta una serie di asterischi pari al numero di lettere di cui è composta, oppure, per lasciare intendere il senso della frase, di lasciare visibile solo la prima e l’ultima lettera.
Compatibilità
Il plugin Filter Badwords Comment è stato testato sul mio blog per diversi giorni ed è compatibile con tutte le versioni di WordPress, quindi anche con la release 2.5.1. In ogni caso, il plugin agisce solo nell’area commenti e non fa altro che lavorare sulla sola visualizzazione senza alterare alcun dato. Il plugin è stato rilasciato esclusivamente in lingua inglese ma presumo che le sue funzionalità e caratteristiche siano abbastanza chiare.
Possibili evoluzioni
Una possibile evoluzione del plugin potrebbe essere quello di non permettere l’inserimento dei commenti se sono presenti parole da censurare. In questo modo si risolverebbe il problema a monte e si educherebbero i commentatori a non scrivere parole offensive! Il problema è che questo non può essere l’unica soluzione ma solo una caratteristica in più, da abbinare alla censura in visualizzazione delle parole, poiché, specie nei siti attivi da più anni e con diversi migliaia di commenti, bisogna comunque filtrare le parole offensive.
L’origine della badlist
Ci tengo a precisare che la lista italiana delle parole da censurare è stata tratta quasi integralmente, ad eccetto di alcune aggiunte da me, dal sito di Clarence che riportava una gaffe notata su un CD di Infinito che aveva lasciato visibile un file badlist.txt con tutte le parole da censurare durante la registrazione, compresi alcuni nomi di partiti italiani.
Supporto
Il plugin può essere testato nella sezione dei commenti di questa pagina. Se avete suggerimenti, domande o segnalazioni di anomalie, potete commentare qui sotto, oppure, contattarmi direttamente per mail dalla sezione Contattami.
Download
[ITALIANO]
Nome Plugin: Filter Badwords Comment
Autore: Antonio Troise
Descrizione: Questo plugin permette di censurare dai commenti le parole che risultano essere offensive prelevandole da un database italiano o inglese. Il plugin agisce solo sulla visualizzazione dei commenti dove è possibile nasconderle completamente dietro una serie di asterischi pari al numero di lettere di cui sono composte, oppure, per lasciare intendere il senso della frase, è possibile lasciare visibile solo la prima e l’ultima lettera.
Versione: 1.0.2
Installazione:
- Scaricate il plugin, decomprimetelo e fate l’upload della dictory badwords nella directory dei plugin di WordPress (wp-content/plugins/).
- Rinominate badwords_IT.txt o badwords_EN.txt nel DB file di default: badwords.txt
- Attivate il plugin “Filter Badwords Comment” plugin da “Gestione plugin” nell’Area di Amministrazione di WordPress.
- Configurate la lista delle parole da censurare e la modalità di mascheramento degli asterischi da Impostazioni » Filter Badwords Comment
Scarica filter_badwords_comment.zip 1.0.2 | |
Dimensione: 6.6 KB |
[ENGLISH]
Plugin Name: Filter Badwords Comment
Author: Antonio Troise
Description: This plugin allows to filter the bad words present in the comments with asterisk from italian/english dictionary. When the comments get displayed, WordPress gives the comment content to the comment filter plugin and returns the modified content that replace the bad word with asterisk.
Release: 1.0.2
Usage:
- Download the plugin, unzip and upload in the directory of plugin of WordPress (wp-content/plugins/).
- Rename badwords_IT.txt or badwords_EN.txt in default DB file: badwords.txt
- Activate “Filter Badwords Comment” plugin from Manage Plugin in the Administration Area of WordPress
- Configuration: Options » Filter Bad Words Comment.
Download filter_badwords_comment.zip 1.0.2 | |
Size: 6.6 KB |
Bel lavoro, anche se avrei aggiunto il controllo su ogni parola invece di matchare la badword all’interno di parole più grosse. Ho paura che in questo modo avrai dovuto rinunciare a tante parole offensive.
Inoltre… l’hai pubblicato già su wordpress.org? Così potrai offrire anche l’auto-aggiornamento…
Ciao,
Emanuele
@Emanuele: Ci riprovo… con l’ultimo plugin non mi hanno mai risposto!
Il controllo sulle singole parole ho tentato di evitarlo in quanto poteva risultare più lento di un match sull’intero commento… comunque sto tentando altre strade per rendere più preciso l’identificazione delle badwords.
Mumble Antonio, se non erro il processo per inserire un plugin è abbastanza automatico e rapido. Con i due plugin che ho scritto io non c’è stato alcun problema. 😮
Ciao,
Emanuele
Mmm…. è il plugin a mangiarsi tutte le lettere MAIUSCOLE?! 😛
Ciao,
Emanuele
@Emanuele: hmm già… provvedo subito a correggere e a rilasciare il nuovo pacchetto 🙂 thanks
UPDATE: Rilasciata la release 1.0.1: ho sostituito str_replace() con str_ireplace() in modo da effettuare le sostituzioni Case-insensitive senza la necessità di usare strtolower() che rendeva tutti i commenti, in visualizzazione, scritti in minuscoli.
Ringrazio Emanuele per la segnalazione!
Eh, non bastano i ringraziamenti! Il testing si paga! E’ un lavoro come gli altri! 😛 😛
Ciao,
Emanuele
UPDATE:: Rilasciata la release 1.0.2: per omogeneità, ho fatto in modo che il db mantenesse sempre le informazioni in minuscolo.
@Emanuele: potrei assumerti a tempo pieno… 😉
Mmm… che intendi “ho fatto si che il db mantenesse le informazioni in minuscolo”? Non ho guardato il plugin… ma non fa un replace in real-time durante il loop di WordPress filtrando le “parole cattive”? Che c’entra il db?
Ciao,
Emanuele
@Emanuele: esattamente… per db intendevo il file badwords.txt.. che di fatto è un flat db 😛 scusa per la confusione generata.. in pratica ora ogni volta che modifichi il file da interfaccia, il plugin salva tutte le parole in maiuscolo… tanto per mantenere il contenuto coerente a seguito delle sostituzioni…
perefetto grazie mille
Pingback: Censurare delle parole dai commenti del nostro Blog Wordpress | Slevino - Ausoni Romeo 12 Giugno 2009
[…] Il suo funzionamento è particolarmente semplice ed è dettagliatamente spiegato nell’articolo di presentazione di questo plugin. L’utilizzo è facilitato grazie al comodo e semplice pannello di […]
funziona molto bene, complimenti! 🙂
Ciao, che tu sappia esiste un plugin che permetta di filtra anche il testo inserito nella casella Nome? Eventualmente esiste un plugin che invece di sostituire le parole con asterischi marchi subito come spam il commento e non lo pubblichi (so che c’è la possibilità di moderare il commento ma nel progetto che seguo tale opzione è stata scartata per diversi motivi).
Grazie.
f