WordPress的:按高级自定义字段按年设置显示帖子

问题描述:

我试图根据在高级自定义字段日期选择器(不是发布的年份)中输入的内容来按年组织帖子。我已经能够非常接近我正在寻找利用年度检查发现:http://alex.leonard.ie/2009/08/27/wordpress-grouping-posts-by-monthyear/WordPress的:按高级自定义字段按年设置显示帖子

我试图做到的是:

2015年

  • 过去展览
  • 过去展览
  • 等等
  • 过去展
  • 过去展
  • 等等
  • 过去展
  • 过去展
  • 等等

唯一的问题是,虽然我成功打印年度,但每年仅列出一个展览。

<?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; ?> 

我在想什么/做错了什么?

+0

你是否得到任何PHP错误? – Stickers 2015-02-10 17:02:48

+0

我打开了调试,并且实现了'$ year_check'实际上并没有在任何地方实际定义(并且在我发布的文章中没有解释它),所以我在其位置使用了'$ today'变量,但是我遇到了同样的问题。 – alyssaster 2015-02-10 17:36:05

+0

这可能无助于解决您的问题,但您应该添加' – Stickers 2015-02-10 18:02:40

其实答案很简单。从if语句中取出文章内容等。

您想只打印一次,但显示所有帖子。

<?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) { ?> 
     <h2><?php echo $year; ?></h2> 
    <?php } ?> 
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    <?php $today = $year; ?> 

<?php endwhile; ?> 

你必须做一些玩耍,让您的UL和制品元件打开和关闭,你想要的,但通过使用if语句只为呼应今年,你的循环的其余部分应进行如下正常。

+0

谢谢!这真的很简单!我想我只是需要暂时离开它,并用新鲜的眼睛看着它。 – alyssaster 2015-02-12 16:19:19