在多个查询中显示“X”个帖子数量

时间:2017-02-17 13:25:31

标签: php wordpress loops posts

我目前正在我的网站上显示活动,基于他们被“标记”的月份。对于每个月我都会查询以显示该月内的帖子,按帖子过期的日期排序。

我正在寻找一种更简单的方法(将其与1个查询组合而不是多个)来显示(例如)所有这些查询中的前50个帖子。

代码:

$argsJanuari = [
    'numberposts'   => -1,
    'cat'           => '-1',
    'order'         => 'ASC',
    'meta_key'      => '_expiration-date',
    'orderby'       => 'meta_value',    
    'meta_query'    => array(
        array(
            'key'   => 'maand',
            'value' => 'Januari 2017',
        )
    )
];

$loopJanuari = new WP_Query($argsJanuari);
    if($loopJanuari->have_posts()) { ?> <h2>Januari 2017</h2> <?php
        while($loopJanuari->have_posts()) {
            $loopJanuari->the_post();
            get_template_part( 'concert-single' );
        }
    wp_reset_postdata();
}

$argsFebruari = [
    'numberposts'   => -1,
    'cat'           => '-1',
    'order'         => 'ASC',
    'meta_key'      => '_expiration-date',
    'orderby'       => 'meta_value',    
    'meta_query'    => array(
        array(
            'key'   => 'maand',
            'value' => 'Februari 2017',
        )
    )
];

$loopFebruari = new WP_Query($argsFebruari);
    if($loopFebruari->have_posts()) { ?> <h2>Februari 2017</h2> <?php
        while($loopFebruari->have_posts()) {
            $loopFebruari->the_post();
            get_template_part( 'concert-single' );
        }
    wp_reset_postdata();
}

$argsMaart = [
    'numberposts'   => -1,
    'cat'           => '-1',
    'order'         => 'ASC',
    'meta_key'      => '_expiration-date',
    'orderby'       => 'meta_value',    
    'meta_query'    => array(
        array(
            'key'   => 'maand',
            'value' => 'Maart 2017',
        )
    )
];

$loopMaart = new WP_Query($argsMaart);
    if($loopMaart->have_posts()) { ?> <h2>Maart 2017</h2> <?php
        while($loopMaart->have_posts()) {
            $loopMaart->the_post();
            get_template_part( 'concert-single' );
        }
    wp_reset_postdata();
}    

?>

1 个答案:

答案 0 :(得分:0)

您可以使用元查询关系将所有查询合并为一个。有关详细信息,请访问:https://codex.wordpress.org/Class_Reference/WP_Meta_Query。此外,要设置帖子数,帖子参数称为posts_per_page。我不确定您使用的那个'numberposts',所以我在下面的代码中替换了它。

无论如何,在下面找到包含合并查询的代码和显示的50个帖子。它没有经过测试和编写,认为上面发布的代码有效。如果这有帮助,请告诉我:)。

$argsConcert = [
    'posts_per_page'   => 50,
    'cat'           => '-1',
    'order'         => 'ASC',
    'meta_key'      => '_expiration-date',
    'orderby'       => 'meta_value',    
    'meta_query'    => array(
        'relation'  => 'OR',
        array(
            'key'   => 'maand',
            'value' => 'Januari 2017',
        )
        array(
            'key'   => 'maand',
            'value' => 'Februari 2017',
        )
        array(
            'key'   => 'maand',
            'value' => 'Maart 2017',
        )
    )
];

$loopConcert = new WP_Query($argsConcert);
    if($loopConcert->have_posts()) { ?> <h2>Concert 2017</h2> <?php
        while($loopConcert->have_posts()) {
            $loopConcert->the_post();
            get_template_part( 'concert-single' );
        }
    wp_reset_postdata();
}