我有一个网站,列出了即将发生的事件和过去发生的事件。
在我的类别中,过去的事件。php模板,这是我如何以降序(从最新到最旧)显示过去事件的方式:
<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array(
\'posts_per_page\' => 100,
\'paged\' => $paged,
\'cat\' => 3709,
\'orderby\' => \'meta_value\',
\'meta_key\' => \'Deadline\', //formatted YYYYMMDD
\'order\' => \'desc\'
);
query_posts($args);
?>
此设置成功地按事件出现的顺序列出事件,例如:。
事件6、事件5、事件4、事件3、事件2、事件1、我如何获得它,以便将过去的事件按月分解?E、 g。
2012年12月-6日-5日-4日
2012年11月—事件3—事件2—事件1
Update: 我在函数中设置了pre\\u get\\u posts。正如@s\\u ha\\u dum所建议的那样,php正在发挥作用。
@KrzysiekDródż,我的问题是,截止日期可能与get\\u时间(“F Y”)不一致。
这是因为我可能会创建一个最后期限为20131212的帖子(即发生在2013年12月),但该帖子的时间可能会有所不同。一、 现在是六月,我为十二月创建了一个即将到来的活动,该帖子的时间是六月,因为我是在六月创建的。
目前在一个生产站点上使用它(尽管我正在使用MAMP进行本地测试)。创建事件的工作流是将帖子分类为事件,然后在事件日期过去后,Post Expirator插件将其类别切换为过去的事件。存在截止日期,因此帖子可以按升序或降序排序。
我还在想过去的事件是如何循环的。php我会使用这个截止日期按月对它们进行排序
SO网友:Krzysiek Dróżdż
首先,我认为你不应该在这里使用你的自定义query\\u帖子。WordPress已经在查询帖子了,所以再查询一遍是浪费时间的。您应该使用pre\\u get\\u posts过滤器或类似的东西。
您可以如何按月拆分帖子?您必须在循环中手动执行此操作。这样的事情应该可以解决你的问题:
$prev_month = \'\';
while ( have_posts() ):
the_post();
$deadline = 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\', $deadline);
if ( $current_month != $prev_month ) {
echo \'<h2>\'. $current_month .\'</h2>\';
$prev_month = $current_month;
// output your post/event
endwhile;
它没有经过测试,所以可能有bug,但这个解决方案背后的想法应该很清楚。