web-dev-qa-db-fra.com

Masquer la publication si correspond au mois et à l'année en cours

J'ai ici une requête qui affiche si elle correspond au mois et à l'année en cours publiés. Le second doit être l'inverse pour le premier code qui affiche toutes les publications sauf celui qui correspond au mois et à l'année en cours.

// CURRENT MONTH AND YEAR ONLY
    <?php
        $current_year = date('Y', current_time('timestamp'));
        $current_month = date('m', current_time('timestamp'));
        if ( have_posts() ) { while ( have_posts() ) { the_post(); }} 
        $args = array('post_type' => 'page', 'post_status' => 'publish', 'posts_per_page' => 12, 'post_parent' => 11120, 'orderby'=> 'menu_order', 'year' => $current_year, 'monthnum' => $current_month, 'order' => 'DESC');
        $query = new WP_Query($args);
        $catNull = get_template_directory_uri();
        while ($query->have_posts()) {
            $query->the_post(); ?>
                <li class="active MonthTreats slide">
                    <div class="MonthHeader">
                        <h1><?php the_title(); ?></h1>
                    </div>
                    <div class="Content">
                        <div class="MonthContent">
                            <div class="container">
                                <p class="Status">NOW AVAILABLE</p>
                                <?php echo c2c_get_custom('Short Description', $before='<h2>', $after='</h2>'); ?>
                                <?php the_content(); ?>
                            </div>
                        </div>
                    </div>
                </li>
            <?php
        }
        wp_reset_postdata();?>


// ALL POST EXCEPT CURRENT MONTH AND YEAR
    <?php
        if ( have_posts() ) { while ( have_posts() ) { the_post(); }} 
        $args = array('post_type' => 'page', 'post_status' => 'publish, future', 'posts_per_page' => 12, 'post_parent' => 11120, 'orderby'=> 'menu_order', 'order' => 'asc');
        $query = new WP_Query($args);
        $catNull = get_template_directory_uri();
        while ($query->have_posts()) {
            $query->the_post(); ?>
                <li class="MonthTreats slide">
                    <div class="MonthHeader">
                        <h1><?php the_title(); ?></h1>
                    </div>
                    <div class="Content">
                        <div class="MonthContent">
                            <div class="container">
                                <p class="Status">NOW AVAILABLE</p>
                                <?php echo c2c_get_custom('Short Description', $before='<h2>', $after='</h2>'); ?>
                                <?php the_content(); ?>
                            </div>
                        </div>
                    </div>
                </li>
            <?php 
        }
        wp_reset_postdata();?>
    </ul>
1
MIke

Initialiser un tableau avant la première boucle:

$exclude = array();

Ajoutez ensuite l'ID de chaque publication de la première boucle à ce tableau:

while ($query->have_posts()) {
    $query->the_post();
    $exclude[] = get_the_ID();
    // etc...

Ensuite, utilisez ce tableau pour exclure ces ID via post__not_in dans la deuxième requête:

$args = array(
    'post_type' => 'page',
    'post__not_in' => $exclude,
    // etc...
2
Milo