WordPress, add_filter e altre amenità
venerdì 7 novembre 2008Con il nuovo template ho introdotto 3 box informativi colorati che rappresentano rispettivamente un alert (in rosso), informazioni (in blu) e suggerimenti (in verde).
Inizialmente avevo deciso di scrivere il codice "a manina", modificando l'html del post in modo da richiamare le classi giuste alla bisogna: poco sbattimeno, resa perfetta.
Ieri però ho ricevuto un'email da Emanuele che implementa un sistema simile sul suo blog in cui mi chiedeva se avessi risolto il problema "in automatico" o se scrivessi il codice a mano come lui.
Visto che non siamo qui a pettinar le bambole e che a quanto pare il problema è sentito da molti e non solo dal sottoscritto mi sono messo a cercare qualche informazione sul codex.
In 5 minuti il mio piccolo plugin era pronto.
Il plugin, in poche parole, usa la funzione add_filter() (link) per sostituire dei bbCode appositamente creati con il codice HTML necessario a richiamare il CSS dei paragrafi speciali.
Vediamo un esempio: il bbCode [speciale] verrà sostituito dal codice HTML necessario per visualizzarlo correttamente.
add_filter("the_content", "napoluxMessages", 8 );
function napoluxMessages($content)
{
$bbCodes = array("[speciale]","[/speciale]");
$html = array("<p class='speciale'>","</p>");
$content = str_replace($bbCodes,$html,$content);
return $content;
}
La funzione add_filter() accetta in questo caso 3 parametri: il testo su cui deve agire ("the_content") , la funzione che effettuerà la modifica del testo ("napoluxMessages") e la priorità di esecuzione della funzione. E' possibile impostare diversi parametri e agire su qualsiasi elemento del nostro blog. Una lista completa dei tag disponibili la trovate qua.
Con le espressioni regolari poi... Beh, vi lascio immaginare cosa potete combinare!
Non è niente di trascendentale, ma comunque buon divertimento!
In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.


















7 novembre 2008 alle 10:31
Apprezzo questi post “tecnici” su wordpress… bravo Francesco!
7 novembre 2008 alle 11:37
Il problema di queste soluzioni però è che la corretta visualizzazione dei post rimane legata al funzionamento del plugin. Finchè si tratta di plugin realizzati autonomamente non c’è problema, ma se facendo affidamento su un plugin altrui questo smette di funzionare e non viene più supportato? Il rischio è di trovarsi il blog pieno di tag senza senso…
7 novembre 2008 alle 11:45
@ Tom:
E’ il problema che sto avendo da quando WP ha attivato la gestione dei tag e ho abbandonato UltimateTagWarrior…
Vedi qua.
Sto studiando una soluzione tramite add_filter() però
7 novembre 2008 alle 12:49
@ Tom:
Sarebbe buona norma prevedere all’interno del proprio plugin una funzione che disabiliti l’applicazione delle sostituzioni dei BBCode, mostrando il “testo” epurato dai tag aggiuntivi.
Ho aggiunto questa funzionalità (ad esempio) nell’ultima release dell’estensiona Wikipedia-Autolink per Blogengine.NET (funzione che verrà poi replicata nella corriposndente versione per WordPress)
Per quanto riguarda i plug-in di terze parti, è possibile implementare un proprio plug-in (o script da lanciare una tantum) che consenta la “bonifica” dei tag obsoleti magari, a partire da un dizionario di stringhe, e “riscrivere” in un colpo solo tutti i commenti o post interesati dall’operazione (previo backup naturalmente).
Il tutto sempre ricorrendo alla funzione add_filter() citata da Francesco
7 novembre 2008 alle 13:01
Ciao,
io ho impostato diverse volte queste “scorciatoie” pe siti di clienti usando il supporto agli “shortcode” disponibile da wordpress 2.5: http://codex.wordpress.org/Shortcode_API
Il funzionamento è lo stesso del tuo plugin ma ti gestisce automaticamente sia le parentesi quadre [ ] che eventuali attributi ecc…
Una volta che ci hai preso la mano è un attimo aggiungere il supporto a “ogni ben di Dio”…
Stef.
7 novembre 2008 alle 14:53
Ciao
grazie mille …. adesso vedo di smanettarci un po’ anche io