it-swarm.com.de

Kategorie aus Schleife ausschließen funktioniert nicht

Ich habe diesen Code in meiner index.php-Datei. Ich habe eine andere Vorlage für eine statische Homepage, dies ist die Blogseite. Ich versuche, alle Beiträge mit der Kategorie "new" auszuschließen, die tag_id "13" ist.

<?php query_posts($query_string . '&cat=-13'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><p class='lead'><?php the_title(); ?></p></a>

<p><?php the_excerpt(); ?> <a href="<?php the_permalink()?>">read in full</a></p>

<p class='muted'><small>Written by: <?php the_author_posts_link(); ?><br>               
            <?php the_time('F jS, Y') ?></small></p><hr>

<?php endwhile; ?>

Irgendwelche Ideen, warum das nicht funktioniert?

2
matt

Verwenden Sie nicht query_posts(). Verwenden Sie stattdessen pre_get_posts:

function wpse82745_filter_pre_get_posts( $query ) {
    // Only modify the main loop,
    // and only in the blog posts index
    if ( is_home() && $query->is_main_query() ) {
        $query->set( 'category__not_in', array( '13' ) );
    }
}
add_action( 'pre_get_post', 'wpse82745_filter_pre_get_posts' );

Dieser Rückruf schließt Kategorie 13 aus der Hauptschleife im Blogpost-Index aus.

1
Chip Bennett

Der $query_string ist wahrscheinlich nicht initialisiert oder nicht als globale Variable deklariert. Versuchen Sie das Hinzufügen

<?php global $query_string; ?>

vor deinem Code

0
Mark Kaplun

Ich stieß auf genau dasselbe mysteriöse Problem, hatte aber Mühe, es zu lösen. Ich habe alle Vorschläge in den Kommentaren hier ausprobiert, aber nichts schien zu funktionieren.

Am Ende habe ich Folgendes versucht, da der Schlüssel die Paginierung beibehielt (da dies im Haupt-Blog-Bereich der Website war und ich "Sonstige Nachrichten" ausschließen wollte):

//  Exclude the Other News category

$otherNews = get_category_by_slug('other-news'); 
$excludeID = $otherNews->term_id;

//query_posts($query_string . '&cat=-' . $excludeID);   <-- Doesn't work for some reason

$args = array('cat' => '-' . $excludeID, 'paged' => $paged );
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts($args);

... und das schien perfekt zu funktionieren.

0
indextwo