web-dev-qa-db-ja.com

現在の月と年に一致する場合は投稿を隠す

現在の月と年に一致する場合に表示されるクエリがここにあります。 2番目のものは、現在の月と年に一致するものを除くすべての投稿を表示する最初のコードの逆のものである必要があります。

// 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

最初のループの前に配列を初期化します。

$exclude = array();

次に、最初のループ内の各投稿のIDをその配列に追加します。

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

次に、その配列を使用して、2番目のクエリのpost__not_inでこれらのIDを除外します。

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