web-dev-qa-db-fra.com

Comment supprimer les transitoires écrits par fetch_feed ()?

J'utilise fetch_feed () pour mettre en cache des sources RSS externes affichées dans un widget. au cas où le widget (ou, plus probablement, l'ensemble du plugin) est supprimé/désactivé, je souhaite supprimer manuellement tous les transitoires associés.

Dans , class-feed.php $ nom_fichier est transmis au constructeur de WP_Feed_Cache_Transient {}, qui gère évidemment les transitoires pour fetch_feed. Je n'ai juste pas compris comment la variable est générée pour la stocker avec les widgets pour des actions de suppression ultérieures.

1
Hans Spieß

Ces données doivent être automatiquement supprimées après 12 heures , c'est la durée de vie par défaut du cache de flux.

Donc, ce genre de ménage, pour les données ajoutées par le API transitoires de WordPress , pourrait être inutile.

Mais vérifions quel type de données est stocké.

Si vous prenez par exemple le fil de votre question actuelle:

http://wordpress.stackexchange.com/feeds/question/172444

et le chercher avec:

$feed = fetch_feed( 'http://wordpress.stackexchange.com/feeds/question/172444' );

vous obtiendrez alors 4 lignes dans la table wp_options:

  1. _transient_feed_mod_89d724e05be3479dcbee0fd481470c97
  2. _transient_timeout_feed_mod_89d724e05be3479dcbee0fd481470c97
  3. _transient_feed_89d724e05be3479dcbee0fd481470c97
  4. _transient_timeout_feed_89d724e05be3479dcbee0fd481

Les lignes _transient_timeout_* sont automatiquement ajoutées par WordPress pour savoir quand supprimer les éléments transitoires.

Remarquerez que:

echo $md5_of_feed_url = md5( 'http://wordpress.stackexchange.com/feeds/question/172444' );

est

89d724e05be3479dcbee0fd481470c97

Vous devez donc connaître le md5 de l'URL du flux , pour supprimer ces données avec le delete_transient() function:

delete_transient( 'feed_'     . $md5_of_feed_url ); 
delete_transient( 'feed_mod_' . $md5_of_feed_url ); 
5
birgire