web-dev-qa-db-fra.com

Affichage des publications personnalisées uniquement si la date de la méta-boîte personnalisée n’est pas expirée

J'ai un problème avec l'affichage des publications personnalisées. Je souhaite que chaque publication ne s'affiche que si une date définie dans un champ personnalisé n'a pas été dépassée.

Je ne peux pas comprendre où je devrais mettre la déclaration if dans le code. Mon idée est:

if($daysleft >= 0)
 then execute the while "custom post";

Le code suivant affiche toutes les publications personnalisées - expirées et non expirées:

<?php               
while(have_posts() ) : the_post();
$date = get_post_meta($post->ID, '_single_date', true); 
$daysleft = round( ($date-time()) / 24 / 60 / 60);  ?>

<div class="coupon-date">
<?php
if($date == '')_e('valid', 'Couponize');
else if($daysleft <= 0) _e('expired', 'Couponize'); 
else echo sprintf( _n('%d day left.', '%d days left.', $daysleft, 'Couponize'), $daysleft ); 
?>
2
anandmongol

Dans votre boucle while(have_posts() ) : the_post();, vous parcourez inconditionnellement tous les articles, mais comme la boucle s'arrête après the_post(), rien ne se produit réellement. Voilà donc où la condition doit aller:

while(have_posts() ) {
    the_post();
    if ($daysleft >= 0) {
         ... other actions
         }
    }

Votre code a l'air un peu incomplet pour moi, donc je ne suis pas sûr que mon code exact fonctionnera, mais c'est bien là que vous voulez la condition.

Veuillez noter que si la requête est retournée, par exemple, 15 publications vous seront peut-être moins affichées si certaines d'entre elles sont expirées. Si vous souhaitez afficher un montant fixe, vous ne devez pas modifier la boucle qui affiche le résultat de la requête, mais la requête elle-même.

1
cjbj