web-dev-qa-db-fra.com

Comment utiliser le cache avec simplepie

Selon la documentation, si vous souhaitez mettre en cache les résultats d'une extraction de flux RSS avec simplepie, procédez comme suit:

 add_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );
 $feed = fetch_feed( $feed_url );
 remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );

Ma question est la suivante: si je veux mettre en cache les résultats de plusieurs URL de flux (en effectuant une boucle dans un tableau), voudrais-je vraiment ajouter et supprimer le filtre pour chaque passe de la boucle (cela ne provoquerait-il pas des entrées séparées dans le cache? chaque alimentation) ou devrais-je faire ceci:

add_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );

for ($i=.......){
  $feed = fetch_feed( $feed_url );
}

 remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );

Franchement (et cela peut paraître évident), je ne comprends pas comment cette mise en cache fonctionne, car tous les exemples que j'ai vus sont des exemples pour un seul flux plutôt que plusieurs. Merci.

4
Allen

L'exemple que vous utilisez à partir du codex l'ajoute et le supprime (probablement pas quelque chose que vous voulez faire) et n'est pas très clair.

Par défaut, WordPress mettra le flux en cache pendant 12 heures en utilisant wp_feed_cache_transient_lifetime, le code actuel utilisé par WP pendant 12 heures est $lifetime = 43200

Si vous voulez modifier l’heure du cache globalement pour tous les flux simplepie, vous pouvez ajouter une nouvelle heure au filtre,

//change cache to 24hrs
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 86400;') );

Si, à la place, vous voulez que les flux de données spécifiques aient des temps de cache différents, vous pouvez utiliser le paramètre $url dans le filtre.

add_filter( 'wp_feed_cache_transient_lifetime', 'change_feed_speed' );

function change_feed_speed( $lifetime, $url ) {

    if( 'http://mysite.org/some-feed.rss' == $url )
        return 86400;

    return $lifetime;
}
3
Wyck