it-swarm.com.de

Sticky Posts im Kategoriearchiv anzeigen

Ich möchte in der Lage sein, klebrige Beiträge oben auf den Kategorieseiten anzuzeigen. Ich benutze archive.php für meine Kategorieseite.

Ich verwende den folgenden Code, um klebrige Beiträge oben auf meiner Kategoriearchivseite anzuzeigen, gefolgt von den übrigen Beiträgen in dieser Kategorie.

Dies funktioniert einwandfrei, bis in der Kategorie keine klebrigen Beiträge mehr angezeigt werden und die Beitragsliste anschließend dupliziert wird.

<?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; ?>

Jede Hilfe wäre sehr dankbar! Vielen Dank.

5
D-B

versuchen Sie, eine bedingte Anweisung zu verwenden, um die erste Schleife umzubrechen. Beispiel:

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

fügen Sie den entsprechenden endif; nach dem endif; der ersten Schleife ein.

3
Michael

Verwenden Sie wp_reset_query() nach query_posts(). Wir haben viele Beiträge dazu. ;)

2
fuxia