web-dev-qa-db-fra.com

Comment utiliser transitoire dans ce code pour un post connexe?

Comment puis-je utiliser transitoire dans ce code pour un article lié?

$related = get_posts(array(
    'author' => $author_id,
    'category__in' => wp_get_post_categories($post->ID),
    'numberposts' => 8,
    'orderby' => 'Rand',
    'post__not_in' => array(
        $post->ID
    )
));
if ($related)
    foreach ($related as $post) {
        setup_postdata($post);
        contenedor();
    }
wp_reset_postdata();
1
EntrepreneurVE

Si vous définissez un transitoire, il ira dans la table wp_options ... ce n'est probablement pas la meilleure chose à faire car vous allez créer un transitoire pour chaque publication de cette façon et cela pourrait signifier BEAUCOUP de transitoires dans votre table d'options.

Il est plus logique de le stocker en tant que post méta, puis de l’expirer vous-même avec un simple contrôle en enregistrant votre propre heure d’expiration des données. par exemple:

$related = get_post_meta($post->ID, 'related_posts');
if ($related) {
    $expires = get_post_meta($post->ID, 'related_expires');
    if ($expires > time()) {
        $related = false;
        delete_post_meta($post->ID, 'related_posts');
        delete_post_meta($post->ID, 'related_expires');
    }
} 
if (!$related) {
    $related = get_posts(array(
        'author' => $author_id,
        'category__in' => wp_get_post_categories($post->ID),
        'numberposts' => 8,
        'orderby' => 'Rand',
        'post__not_in' => array(
            $post->ID
        )
    ));
    if ($related) {
         add_post_meta($post->ID, 'related_posts', $related);
         add_post_meta($post->ID, 'related_expires', time()+(24*60*60));
    }
}
if ($related) {
    foreach ($related as $post) {
        setup_postdata($post);
        contenedor();
    }
}
wp_reset_postdata();
1
majick