web-dev-qa-db-fra.com

Plusieurs requêtes et exclure les messages répétitifs?

J'essaie de trouver un moyen d'exclure les publications utilisées dans les quatre premières requêtes personnalisées de la dernière requête classique. Je n'ai rien trouvé qui puisse expliquer comment le faire clairement.

Mes quatre premières boucles:

<?php 
// Loop 1
    $first_query = new WP_Query('category_name=funding&showposts=1'); // select category
    $ids = array(); 
    while($first_query->have_posts()) : $first_query->the_post(); ?>

        <?php the_title(); ?></br>

    <?php endwhile;


// Loop 2
    $second_query = new WP_Query(array('post__not_in' => $ids,'category_name' => 'industry','posts_per_page' => 1)); // select category
    while($second_query->have_posts()) : $second_query->the_post();
    $ids[] = get_the_ID(); ?>

        <?php the_title(); ?></br>

    <?php endwhile;


// Loop 3
    $third_query = new WP_Query(array('post__not_in' => $ids,'category_name' => 'open-consultations','posts_per_page' => 1)); // select category
    while($third_query->have_posts()) : $third_query->the_post();
    $ids[] = get_the_ID(); ?>

        <?php the_title(); ?></br>

    <?php endwhile;


// Loop 4
    $fourth_query = new WP_Query(array('post__not_in' => $ids,'category_name' => 'policy','posts_per_page' => 1)); // select category
    while($fourth_query->have_posts()) : $fourth_query->the_post();
    $ids[] = get_the_ID(); ?>

        <?php the_title(); ?>

    <?php endwhile; ?>

Une requête WordPress typique que je souhaite supprimer des publications répétées:

<?php if ( have_posts() ) : ?>

<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>

<a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'category-thumb', array('class' => 'alignleft')); } ?></a>              
    <strong style="float:right;"><?php the_time('l, F jS, Y') ?></strong>

    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

    <?php the_excerpt(); ?>

<hr>

<?php endwhile; ?>
<?php wp_pagenavi(); ?> <!-- Pagination -->

<?php endif; ?>
2
Dan Lee

Vous l'avez déjà compris, mais je posterai quand même une réponse pour les autres.

Pour modifier une requête déjà définie, le moyen le plus simple consiste à utiliser query_posts () .

Notez que cela ne fonctionnera que s’il est exécuté avant la boucle.

<?php
query_posts(array(
    'post__not_in' => array(1,2,3,4,'...')
));
?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php // Loop content here ?>
<?php endwhile; else: ?>
    <?php // No posts message here ?>
<?php endif; ?>
3
Brady