web-dev-qa-db-fra.com

commander des articles par date, comme craigslist

the image is worth a thousand words. take a look at it.

vous savez comment craigslist a des publications organisées par date ..ex

Tue 3

poster des liens pour mardi

Wed 4

poster des liens pour le mercredi

Thurs 5

poster des liens pour thur

Je sais que les publications wordpress sont organisées par date et par défaut. regarde ça alt text des idées? si cela n'avait pas de sens, faites-le-moi savoir. tx

4
andrewk

Vous remarquerez peut-être que j'ai fait plus ou moins exactement cela pour le site de Matt: http://ma.tt . Chaque ensemble de messages est regroupé par jour. Le principe de base est de garder une trace de votre journée dans la boucle, puis d’imprimer la date et les éléments connexes uniquement lorsqu’elle change.

Prenez une boucle de base:

if ( have_posts() ) : while ( have_posts() ) : the_post();
  the_title();
  the_content();
endwhile; endif;

Ceci imprime simplement le titre et le contenu (sans aucune mise en forme ni rien) pour tout ce qui se trouve dans la boucle en cours. Maintenant, vous voulez qu'une nouvelle date apparaisse à chaque changement de date. Donc, vous devez garder une trace de quand cela change. Ainsi:

$loopday = '';
if ( have_posts() ) : while ( have_posts() ) : the_post();
  if ($loopday !== get_the_time('D M j')) {
    $loopday = get_the_time('D M j');
    echo $loopday;
  }
  the_title();
  the_content();
endwhile; endif;

Cela permet de stocker la date que vous souhaitez afficher dans une variable. Chaque passage dans la boucle, il le récupère et vérifie s'il a changé. Si cela n'a pas changé, alors rien ne se passe. S'il a changé, il définit la variable avec la nouvelle chaîne de date, la sort, puis passe à autre chose.

Évidemment, ce n’est qu’un exemple. Les détails spécifiques dépendent du mode de fonctionnement de votre boucle existante et de la manière dont vous souhaitez générer les informations.

Bien que the_date () le fasse par défaut, il est parfois plus facile de le faire vous-même de cette manière, pour des raisons de formatage.

9
Otto

Comme @goldenapples l'a noté, si votre modèle utilise the the_date (); balise de gabarit, il le fera tout seul, par défaut. Je me souviens avoir été dérouté la première fois que j'ai utilisé WordPress et je ne savais pas comment l'obtenir pour arrêter de le faire.

Avez-vous déjà testé et ce n'est pas le résultat que vous obtenez? Il peut simplement s'agir de changer les tags utilisés par votre modèle.

À votre santé.

1
Christopher

UPDATE mis à jour en fonction des notes dans les commentaires, allez-y, mettez ceci à la place de votre boucle

  if (have_posts()) : while (have_posts()) : the_post(); 
        if($day_check = ''){ $day_check = $post->date}
        if ($day_check = $post->date){
            if (!$day_echod){
                echo '<div class="date">'.the_date().'</div>';
                $day_echod = true;
            }
        }else{
            $day_check = the_date();
            echo '<div class="date">'.the_date().'</div>';
        }
            ?>
            <div class="title_link">
                <a href="<?php the_permalink(); ?>"><?php the_title() ;?></a>
            </div>
            <?php           

               <?php endwhile; ?>
     <?php endif; ?>
1
Bainternet

les appels à get_the_date () ou à get_the_time () compliquent trop les résultats. Utilisez simplement the_date (), qui n'imprimera la date qu'une fois par jour, par défaut.

Voir l'article du Codex sur ce sujet:

http://codex.wordpress.org/Function_Reference/the_date

0
ZaMoose