web-dev-qa-db-fra.com

Afficher une seule publication chaque SEMAINE

J'ai un type de message personnalisé nommé 'NEWS' où j'ai déjà publié 52 messages à la fois. Maintenant, en face, j'aimerais les afficher ONE NEWS pour ONE WEEK. Donc 52 NOUVELLES couvriront un an pour moi.

Ma question, comment puis-je exécuter la requête et planifier pour afficher 1 News pour 1 semaine. Il n'y a pas de problème obligatoire que pour certaines NEWS pour certaines SEMAINES. Il suffit de l’afficher en mode décroissant/descendant pour chaque semaine.

Vraiment apprécier si quelqu'un peut aider à se débarrasser de ce problème.

Merci d'avance.

1
Mehedi Hasan

Il existe un grand nombre de moyens pour atteindre cet objectif et l'optimiser pour le rendre également efficace.

Voici juste une idée de base pour y parvenir en utilisant le paramètre offset dans WP_Query et en utilisant la fonction php date() pour obtenir le numéro de la semaine en cours.

  • D'abord, vous devriez obtenir le numéro de la semaine en cours avec date( 'W' ). Vous pouvez décider de prendre cela comme point de départ, ce qui sera 15 cette semaine. Vous pouvez également décider de commencer à 1 en déduisant 15 moins 1 de la semaine en cours. A partir du 1er janvier, vous devrez recalculer cela différemment pour obtenir le décalage correct. Vous pouvez jouer avec cela pour répondre à vos besoins

  • Ensuite, calcule la offset. Le décalage correspond à la semaine en cours moins 1 pour vous assurer que votre premier décalage est 0 pour obtenir le premier message et 51 pour obtenir le 52ème message (dernier message).

Voici un exemple de requête pour commencer cette semaine à 15; ( Ceci est juste la base, pensez à réinitialiser votre requête avec wp_reset_postdata())

$args = array(
    'post_type' => 'news',
    'posts_per_page' => 1,
    'no_found_rows' => true, 
    'offset' => (date( 'W' ) - 1)
);
$q = new WP_Query( $args );
var_dump( $q->posts );

Cela devrait vous donner un article du type d'article news qui changera une fois par semaine avec le début de la nouvelle semaine.

1
Pieter Goosen