web-dev-qa-db-fra.com

Réinitialiser la post populaire?

J'utilise le code suivant pour afficher la plupart des articles lus. Je pense que cela prend toute la durée de vie des articles, car ils affichent d’abord de très vieux articles. Comment puis-je le réinitialiser - chaque semaine?

dans mon function.php

function setPostViews($postID) {
    $countKey = 'post_views_count';
    $count = get_post_meta($postID, $countKey, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $countKey);
        add_post_meta($postID, $countKey, '0');
    }else{
        $count++;
        update_post_meta($postID, $countKey, $count);
    }
}

Afficher dans ma page

<?php
                            query_posts (array (
                            'posts_per_page' => 5,
                            'meta_key' => 'post_views_count',
                            'orderby' => 'meta_value_num',
                            'order' => 'DESC',
                            'ignore_sticky_posts' => true,
                            ));
                            if (have_posts()) : while (have_posts()) : the_post();
                            ?>
                                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                            <?php
                            endwhile; endif;
                            wp_reset_query();
                            ?>
1
mad2kx

Si vous êtes d'accord réinitialisez chaque semaine - comme les vues partent de 0 tous les lundis - au lieu d'essayer d'afficher le nombre de lectures les plus lues au cours des 7 derniers jours, le changement le plus simple consisterait à utiliser une clé méta différente pour Chaque semaine de l'année. Ensuite, lorsque vous interrogez les publications, vous interrogez simplement le nombre de vues pour la semaine de l'année en cours:

Vous pouvez le faire en changeant simplement ceci:

$countKey = 'post_views_count';

Pour ça:

$countKey = 'post_views_count_' . date( 'YW' );

date( 'YW' ) vous donnera un nombre tel que 201831, qui représente la 31e semaine de 2018; chaque semaine recevra donc sa propre clé méta telle que post_views_count_201831.

Ensuite, lorsque vous interrogez les publications, changez:

'meta_key' => 'post_views_count',

Pour utiliser la clé méta pour la semaine en cours:

'meta_key' => 'post_views_count_' . date( 'YW' ),

Cela signifie que, lorsque la semaine basculera, vous n'aurez plus de messages avec vues, car le décompte a recommencé. Une des choses que vous pouvez faire est de changer la requête afin qu’elle continue à afficher pendant une journée les publications les plus populaires de la semaine précédente, tout en comptant le nombre de vues de la semaine en cours:

'meta_key' => 'post_views_count_' . date( 'YW', strtotime( '-1 day' ) ),
1
Jacob Peattie