如何只显示今天同月同日的所有帖子?

时间:2015-01-13 作者:Web_Mistress00

我想知道怎么做。我有很多帖子。我希望这样,当有人打开网站时,首页会显示在同一个月和同一天发布的所有帖子,但不考虑年份。所以,如果我在1月30日打开网站,我会看到任何一年的所有帖子都在1月30日完成。。。历史清单。我也在考虑按类别分类,如果类别命名为1月30日,有没有办法让系统记录今天的日期,并将其与类别进行比较,然后显示匹配的日期(当然没有年份)?

有人能帮忙吗?

3 个回复
SO网友:Milo

您可以通过date_query parameters 在版本3.7中添加。

要在运行帖子页面上的主查询之前对其进行修改,请应用date_query 参数,我们使用pre_get_posts 措施:

function historical_posts_list( $query ){
    if( $query->is_home() && $query->is_main_query() ){
        $date_query = array(
            array(
                \'month\' => date( \'n\', current_time( \'timestamp\' ) ),
                \'day\' => date( \'j\', current_time( \'timestamp\' ) )
            )
        );
        $query->set( \'date_query\', $date_query );
    }
}
add_action( \'pre_get_posts\', \'historical_posts_list\' );
如果要在其上执行此操作的页面不是您的帖子页面,则可以在模板中使用相同的参数添加自定义查询,并运行单独的循环:

$posts_from_today = new WP_Query( array(
    \'date_query\' => array(
        array(
            \'month\' => date( \'n\', current_time( \'timestamp\' ) ),
            \'day\' => date( \'j\', current_time( \'timestamp\' ) )
        ),
    ),
    \'posts_per_page\' => -1,
) );

if( $posts_from_today->have_posts() ){
    while( $posts_from_today->have_posts() ){
        $posts_from_today->the_post();
        the_title();
    }
}

SO网友:chrisguitarguy

$q  = new \\WP_Query([
  \'monthnum\' => date(\'n\'), // beware the date function!
  \'day\'      => date(\'j\'),
]);

while ($q->have_posts()) {
  $q->the_post();
  // ...
}
wp_reset_query();
请参阅上的文档date parameters.

由于您想专门修改主页查询,您可以pre_get_posts 并仅修改主页上的主查询。

add_action(\'pre_get_posts\', \'wpse174669_pre_get_posts\');
function wpse174669_pre_get_posts($q)
{
    if (is_home() && $q->is_main_query()) {
        $q->set(\'ignore_sticky_posts\', true);
        $q->set(\'monthnum\', date(\'n\'));
        $q->set(\'day\', date(\'j\'));
    }
}

SO网友:darrinb

如果你选择分类路线,你可以这样做:

首先,了解一下今天的日期:

$date_slug = current_time(\'M-d\');
然后,创建分类查询参数数组:

$tax_query =  array(
    array(
        \'taxonomy\' => \'category\',
        \'field\'    => \'slug\',
        \'terms\'    => $date_slug,
    )
);
然后,使用WP_Query 类别:

$r = new WP_Query(
    array(
        \'tax_query\' => $tax_query,
    )
);
然后,构建loop:

<?php if ($r->have_posts()) : ?>

    <?php while ( $r->have_posts() ) : $r->the_post(); ?>

    <?php endwhile; ?>

<?php endif; ?>

<?php wp_reset_postdata(); ?>

结束

相关推荐

WHERE子句中包含!=的WPDB UPDATE行

我正在使用wpdb开发一个插件,将自定义表单添加到wordpress。要更新行,我使用数组和wpdb->update(). WP类参考说明:我的SQL代码应该是UPDATE ROW .... WHERE a=\'a\' AND b!=\'c\'. 问题是!= 似乎不起作用,事实上WP Class Reference 的命名数组WHERE 子句(列=>值对)。我需要连接到外部数据库并从该数据库中获取数据,这样我就不能使用任何可用的插件。