首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress:按年显示高级自定义字段中的帖子

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

Stack Overflow用户
提问于 2015-02-10 16:48:51
回答 1查看 1.1K关注 0票数 1

我试图按年组织文章,基于高级自定义字段日期选择器(而不是发布的年份)中输入的内容。我已经能够非常接近我正在寻找的使用在http://alex.leonard.ie/2009/08/27/wordpress-grouping-posts-by-monthyear/上找到的年份检查器

我想要完成的是:

2015年

  • 过去的展览
  • 过去的展览
  • 等。

2014年

  • 过去的展览
  • 过去的展览
  • 等。

2013年

  • 过去的展览
  • 过去的展览
  • 等。

唯一的问题是,虽然我能成功地印刷这一年,但每年只列出一个展览。

代码语言:javascript
复制
    <?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; ?>

我错过了什么/做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-12 08:36:45

答案其实很简单。将帖子内容等从if语句中删除。

你只想打印一年一次,但显示所有的帖子。

代码语言:javascript
复制
<?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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28437200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档