web-dev-qa-db-fra.com

Afficher les post-it dans les archives des catégories

J'aimerais pouvoir afficher les posts collants en haut des pages de catégorie. J'utilise archive.php pour ma page de catégorie.

J'utilise le code ci-dessous pour afficher les posts collants en haut de la page d'archives de ma catégorie, suivis du reste des posts de cette catégorie.

Cela fonctionne bien, jusqu'à ce qu'il n'y ait plus de messages collants à afficher dans la catégorie, puis cela duplique la liste des messages.

<?php   
// get the current category
$category = get_the_category();
// get the sticky post in the category, order by title - ascending
query_posts(array( 'post__in' => get_option('sticky_posts'), 'orderby' => 'title', 'post_date' => 'DESC' , 'cat' => ''.$category[0]->cat_ID.'' ));
?>
<?php if (have_posts()) : ?>
<?php
if ($cat)
{echo "<h2>Articles in " . get_the_category_by_ID($cat) . "</h2>";}
?>
    <ul id="archive-list">      
    <?php while (have_posts()) : the_post(); ?>             
        <li class="sticky"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span>Updated on <?php the_modified_date(); ?> at <?php the_modified_time() ?></span></li>
    <?php endwhile; ?>
    </ul>   

<?php endif; ?>


<?php   
// get the sticky post in the category, order by title - ascending
query_posts(array( 'post__not_in' => get_option('sticky_posts'), 'orderby' => 'title', 'post_date' => 'DESC' , 'cat' => ''.$category[0]->cat_ID.'' ) );
?>
<?php if (have_posts()) : ?>
    <ul id="archive-list">      
    <?php while (have_posts()) : the_post(); ?>             
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span>Updated on <?php the_modified_date(); ?> at <?php the_modified_time() ?></span></li>
    <?php endwhile; ?>
    </ul>   

<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>

    <?php else : ?>

        <h1 class="center">Sorry, no articles have been published in the <?php if ($cat) {echo "" . get_the_category_by_ID($cat) . "";} ?> category.</h1>
        <?php include (TEMPLATEPATH . '/searchform.php'); ?>

<?php endif; ?>

Toute aide serait grandement appréciée! Merci.

5
D-B

essayez d'utiliser une instruction conditionnelle pour boucler la première boucle, telle que:

if( get_option('sticky_posts') ) : //only do the next part if sticky posts

ajoutez le endif; correspondant après le endif; de la première boucle.

3
Michael

Utilisez wp_reset_query() après query_posts(). Nous avons beaucoup de messages à ce sujet. ;)

2
fuxia