La structure d'un article se compose habituellement d'un titre, et de quelques informations sous ce titre. Ce sont les données "post meta". Elles contiennent différentes précisions comme la date et l'heure de sa création, l'auteur de l'article et la catégorie associée a cet article. Or, certains thèmes et/ou plugins font un usage intensif de ces données "post meta".

 

Habituellement, la façon dont tout cela est mis en œuvre, créer une requête de base pour chaque valeur "meta" demandée. Cela peut facilement s'accumuler et créer une quantité « conséquente » de requêtes lorsque cela est utilisé dans une boucle.

Cette astuce devrait permettre de réduire ce nombre de requêtes.

Placez ce code dans le fichier functions.php de votre thème :

// Cache Post Meta Data

add_filter('posts_results', 'cache_post_meta_data', 9999, 2);

function cache_post_meta_data($posts, $object)
{
$posts_to_cache = array();
if (empty($posts) || is_wp_error($posts) || is_single() || is_page() || count($posts) < 3) return $posts;
foreach($posts as $post)
{
if (isset($post->ID) && isset($post->post_type))
{
$posts_to_cache[$post->ID] = 1;
}
}

if (empty($posts_to_cache)) return $posts;
update_meta_cache('post', array_keys($posts_to_cache));
unset($posts_to_cache);
return $posts;
}