WordPress自定义查询以显示过去x年的帖子

时间:2014-01-21 作者:Natoli

我找到了一种使用此代码显示当年所有帖子的方法:

<?php
$today = getdate();
$lastyear = $today[ \'year\' ];
$args = array( 
    //\'nopaging\' => true,
    \'paged\' => $paged,
    \'category\' => 1, 
    \'posts_per_page\' => 36,
    \'year\' => $lastyear,
);
query_posts( $args ); // The Query ?>

    <div id="grid">

    <?php while ( have_posts() ) : the_post(); // The Loop ?>
        <?php get_template_part( \'article\', \'thumb\' ); ?>
    <?php endwhile; ?>

    </div>

    <?php get_template_part( \'navigation\' ); ?>

<?php wp_reset_query(); // Reset Query ?>
然而,我真正想要的是展示从2年前到今天(2014年1月)的帖子,也就是2012年、2013年和2014年的帖子。我该怎么做?

非常感谢。

1 个回复
最合适的回答,由SO网友:Rob Vermeer 整理而成

<?php
$today = getdate();
$args = array( 
    //\'nopaging\' => true,
    \'paged\' => $paged,
    \'category\' => 1, 
    \'posts_per_page\' => 36,
    \'date_query\' => array(
        array(
            \'after\' => $today[ \'month\' ] . \' 1st, \' . ($today[ \'year\' ] - 2)
        )
    )
);
$catgory_posts = new WP_Query( $args ); // The Query ?>

<div id="grid">

<?php if( $catgory_posts->have_posts() ) while ( $catgory_posts->have_posts() ) : $catgory_posts->the_post(); // The Loop ?>
    <?php get_template_part( \'article\', \'thumb\' ); ?>
<?php endwhile; ?>

</div>

<?php get_template_part( \'navigation\' ); ?>
参见WordPress codex上的日期参数:http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

结束

相关推荐

如何将默认的Orderby从“Date”更改为例如“标题”或我在管理中的内容类型记录列表中的自定义列?

如何将admin中内容类型记录列表中的默认orderby从“日期”更改为“标题”或“我的自定义列”?现在,创建或更改总是第一个。但我想按我的自定义字段对记录进行排序(我已经按照此处的建议使用排序功能创建了它:http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types) 我的问题是如何将orderby设置为默认值,例如title或我的自定义列“expiration”。有什么钩子吗?