【发布时间】:2015-02-12 16:36:45
【问题描述】:
我正在尝试根据在“高级自定义字段”日期选择器中输入的内容(不是发布年份)按年份组织帖子。我已经能够非常接近我正在寻找的使用年份检查器:http://alex.leonard.ie/2009/08/27/wordpress-grouping-posts-by-monthyear/
我想要完成的是:
2015
- 往届展览
- 往届展览
- 等
2014
- 往届展览
- 往届展览
- 等
2013
- 往届展览
- 往届展览
- 等
唯一的问题是,虽然我可以成功打印年份,但每年只列出一个展览。
<?php if (have_posts()) : ?>
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$today = date('Ymd');
$past_args = array(
'paged' => $paged,
'posts_per_page' => -1,
'post_type' => 'exhibitions',
'meta_query' => array (
array (
'key' => 'end_date',
'value' => $today,
'compare' => '<',
'type' => 'DATE'
)
),
'orderby' => 'meta_value_num',
'order' => 'DESC'
);
query_posts( $past_args );
?>
<!-- PAST EXHIBITIONS -->
<?php while (have_posts()) : the_post(); ?>
<?php
$date = get_field('end_date');
$past_year = DateTime::createFromFormat('Ymd', $date);
$year = $past_year->format('Y');
if ($year !== $today) { ?>
<article class="year-<?php echo $year; ?> child-page four columns">
<h2><?php echo $year; ?></h2>
<ul>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</li>
</ul>
</article>
<?php }
$today = $year; ?>
<?php endwhile; ?>
<?php endif; ?>
我错过了什么/做错了什么?
【问题讨论】:
-
您是否收到任何 PHP 错误?
-
我打开调试并意识到
$year_check实际上并没有在任何地方定义(并且在我发布的文章中没有解释),所以我使用了$today变量代替它,但我运行进入同一个问题。 -
这可能无助于解决您的问题,但您应该在
<?php endwhile; ?>之后添加<?php wp_reset_postdata(); ?> -
如果你做了一些,你应该定义
$year_check或更新你的代码。
标签: wordpress advanced-custom-fields