我目前正在我的网站上显示活动,基于他们被“标记”的月份。对于每个月我都会查询以显示该月内的帖子,按帖子过期的日期排序。
我正在寻找一种更简单的方法(将其与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();
}
?>
答案 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();
}