J'utilise régulièrement Advanced Custom Fields pour créer des interfaces dorsales impressionnantes pour mes clients (comme beaucoup d'entre nous le faisons, j'en suis sûr…). ACF inclut un module complémentaire Options qui crée une ou plusieurs pages d'options globales pouvant être extraites des données n'importe où. J'utilise la page Options pour, par exemple, laisser le client sélectionner les 5 articles à afficher sur un carrousel de page d'accueil.
J'ai commencé à rencontrer des problèmes en utilisant le module complémentaire Options et Super Cache. Il semble que par défaut, l'enregistrement de la page Options n'ait aucun effet sur le cache. Ainsi, par exemple, le carrousel de pages d'accueil reste inchangé et le client est confus…
Je dois me connecter à la page Options pour vider le cache par programmation lorsque la page Options est enregistrée, car je ne donne généralement pas à mes clients un accès administrateur ou ne les dérange pas avec des tâches techniques telles que des caches.
L'auteur de ACF dit ce qui suit: Il existe une action appelée acf/save_post qui permet de sauvegarder toutes les données de champ enregistrées. Vous pourriez peut-être utiliser cette action pour accrocher et vider le cache. Vous pouvez utiliser le paramètre $ post_id pour déterminer s'il s'agit ou non d'une page d'options. Je crois que la page des options passera par '0' en tant que post_id. Soit ça ou 'options'.
Est-ce que n'importe qui peut aider à créer une action qui effacerait complètement le cache Super Cache chaque fois que la page Options est enregistrée. Cela aiderait sans doute beaucoup de gens!
info acf/save_post ici: http://www.advancedcustomfields.com/resources/actions/acfsave_post/
Merci beaucoup d'avance.
Cette fonction effacera WP Super Cache lors de l'enregistrement de la page Options ACF. Prendre plaisir!
<?php
/* Additional Function to Prune the Cache if $post_id is '0' or 'options' */
function f711_clear_custom_cache($post_id) {
// just execute if the $post_id has either of these Values. Skip on Autosave
if ( ( $post_id == 0 || $post_id == 'options' ) && !defined( 'DOING_AUTOSAVE' ) ) {
// Some Super Cache Stuff
global $blog_cache_dir;
// Execute the Super Cache clearing, taken from original wp_cache_post_edit.php
if ( $wp_cache_object_cache ) {
reset_oc_version();
} else {
// Clear the cache. Problem: Due to the combination of different Posts used for the Slider, we have to clear the global Cache. Could result in Performance Issues due to high Server Load while deleting and creating the cache again.
Prune_super_cache( $blog_cache_dir, true );
Prune_super_cache( get_supercache_dir(), true );
}
}
return $post_id;
}
// Add the new Function to the 'acf/save_post' Hook. I Use Priority 1 in this case, to be sure to execute the Function
add_action('acf/save_post', 'f711_clear_custom_cache', 1);
?>