Modificare il periodo di refresh dei feed esterni in WordPress
Sul nuovo template ho messo in homepage alcuni “box”; un paio di questi recuperano le informazioni da un feed esterno e le ripubblicano. Per questo scopo WordPress ha una funzione apposita: fetch_feed, che restituisce un oggetto SimplePie utilizzabile per i propri scopi.
I risultati vengono cachati e ricaricati alla scadenza, ma purtroppo non c’è modo di impostare dalla funzione il tempo di refresh del feed, che di default è di 12 ore; specie per Twitter tale valore è un po’ troppo basso per i miei gusti, e ho cercato di capire se fosse modificabile. Il problema è banale, ma su Google i risultati sono viziati: la stragrande maggioranza riguarda i feed generati da WordPress, non quelli letti dall’esterno.
Alla fine ho capito che è necessario modificare una funzione, e questo introduce un secondo problema: il file da editare fa parte del core di WordPress, che non è mai consigliabile modificare. Inoltre il lavoro andrebbe perso al prossimo aggiornamento. La soluzione è fare la modifica nel file functions.php del tema, aggiungendo un filtro fatto così:
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 3600;') );
Questa riga altera il comportamento predefinito della funzione in modo che i feed vengano ricaricati ogni ora (3600 secondi) dato che modifica il valore di wp_feed_cache_transient_lifetime.
E tutto funziona come per magilla.
Tags: Tecnica, WordPress