web-dev-qa-db-fra.com

Afficher les messages d'une catégorie avec une vignette et une description de la dernière

Existe-t-il un widget permettant à WordPress d'afficher les messages d'une catégorie avec une vignette et une description du dernier message? WIDGET LIKE: Top section de nouvelles de WWW.GOAL.com.

enter image description here

1
david

Je ne connais pas de widgets ou de plugins qui le font par défaut. Pour créer cela dans votre thème, vous devez écrire plusieurs boucles de requête qui passent par chaque catégorie, puis interroger les dernières publications de chacune avec un compteur afin que la publication principale puisse être stylée différemment.

Exemple rapide.

$cats = get_categories();

foreach ( $cats as $cat ) {  //Loop through all the categories
    $count = 0;
    $args = array(
           'cat' => $cat->term_id,  //uses the current category in the loop
           'posts_per_page' => 4,
           'no_found_rows' => true,  //Performance optimizes the query
           'update_meta_cache' => false,  //We don't need post_meta
           );

    echo '<div class="aside-'. $cat->slug .'">'. $cat->name .'</div>';

    $cat_q = new WP_Query( $args );
    while( $cat_q->have_posts() ) : $cat_q->the_post();
    $count++

    if( $count == 1 ) { ?>  //Sets the output for the top post
        <div id="post-<?php the_ID(); ?>" <?php post_class('feature'); ?>>
            <fig><?php the_post_thumbnail(); ?></fig>
            <h3 class="post-title feature><a href="<?php the_permalink(); ?>><?php the_title(); ?></a></h3>
            <p><?php the_excerpt(); ?></p>
        </div>
        <div class="right-side">
        <ul class="post-list">
<?php } else { ?>
        <li><a href="<?php the_permalink(); ?><?php the_title(); ?></a></li>
<?php }
     endwhile; ?>
         </ul>
         </div><!-- /end .right-side -->
         </div><!-- /end .aside-<?php echo $cat->slug; ?> -->

<?php } //Ends our category foreach loop
1
Chris_O

Cela fera l'affaire,

<?php $postCount = 0; ?>
    <h1 class="section_title">Category-1</h1>
    <?php query_posts('cat=1&showposts=4'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    <?php if($postCount == 0) { the_excerpt(); }?> 
    <?php $postCount++; ?>
<?php endwhile; ?>

<?php $postCount = 0; ?>
    <h1 class="section_title">Category-2</h1>
    <?php query_posts('cat=2&showposts=4'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    <?php if($postCount == 0) { the_excerpt(); }?> 
    <?php $postCount++; ?>
<?php endwhile; ?>

<?php $postCount = 0; ?>
    <h1 class="section_title">Category-3</h1>
    <?php query_posts('cat=3&showposts=4'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    <?php if($postCount == 0) { the_excerpt(); }?> 
    <?php $postCount++; ?>
<?php endwhile; ?>

Remarque -

  • Ici, nous faisons trois requêtes pour afficher les messages dans trois groupes par catégories
  • Remplacez cat = 1 par l'ID de catégorie que vous souhaitez afficher
  • Showposts = 4 affichera les 4 derniers articles, y compris le premier (article complet)
  • if($postCount == 0) a été utilisé pour déterminer le premier poste en boucle et afficher l'extrait
0
amit