首先,我认为你不应该在这里使用你的自定义query\\u帖子。WordPress已经查询了归档页面上的帖子,所以再次查询它们是浪费时间的。您应该使用pre_get_posts
滤器
function my_pre_get_posts($query) {
if (!is_admin() && is_main_query() \'<YOUR_POST_TYPE>\' === $query->query_vars(\'post_type\')
&& $query->is_archive()) {
$query->set(\'orderby\',\'meta_value\');
$query->set(\'meta_key\', \'<YOUR_POST_TYPE>\'); //formatted YYYYMMDD
$query->set(\'ignore_sticky_posts\', true);
}
return $query;
}
add_filter(\'pre_get_posts\',\'my_pre_get_posts\');
当您的帖子被选中时,您可以在循环中手动按月拆分帖子。这样的事情应该可以解决你的问题:
$prev_month = \'\';
while ( have_posts() ):
the_post();
$post_custom_date = strtotime(get_post_meta($post->ID, \'Deadline\', true)); // this line may need to be changed - it depends on the format you choosed to store dates in deadline meta value
$current_month = date(\'F Y\', $post_custom_date );
if ( $current_month != $prev_month ) {
echo \'<h2>\'. $current_month .\'</h2>\';
$prev_month = $current_month;
// output your post/event
endwhile;
它没有经过测试,所以可能有点问题,但这个解决方案背后的想法应该很清楚。